Я добавлял платформу x64 к моему решению сегодня, когда я столкнулся с этой проблемой.
В моем случае, прочитал ошибки:
Built $/ProjectDirectory/ProjectName.csproj for default targets. c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (484): The OutputPath property is not set for project ProjectName.csproj'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='Debug' Platform='x64'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Configuration or Platform that doesn't exist for this project.
Я знал, что OutputPath
должно быть хорошо, так как это был существующий, работая VS решения. Поэтому я перешел к следующему намеку - «действительная комбинация конфигурации и платформы».
Aha! Visual Studio пытается построить Configuration='Debug', Platform='x64'
. Глядя на файл моего проекта, я понял, что x64 не упоминается как одна из возможных платформ. Другими словами, у меня были следующие записи (сокращенные):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<PlatformTarget>x86</PlatformTarget>
<OutputPath>bin\x86\Debug\</OutputPath>
. . .
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<PlatformTarget>x86</PlatformTarget>
<OutputPath>bin\x86\Release\</OutputPath>
. . .
</PropertyGroup>
Легко исправить то: просто добавьте x64 записей!
Я копирую/вставляю записи x86 и меняю их на использование x64. Заметьте, что я также изменил пути, так что они не перезаписать x86 сборки:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
<PlatformTarget>x64</PlatformTarget>
<OutputPath>bin\x64\Debug\</OutputPath>
. . .
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
<PlatformTarget>x64</PlatformTarget>
<OutputPath>bin\x64\Release\</OutputPath>
. . .
</PropertyGroup>
Я боролся с этим в течение нескольких часов, пока не понял, что выпадающий список в определении сборки TFS имеет «Любой процессор», а не «AnyCPU» !!!! –
В VS2012 выпадающим в конфигурации сборки является «Любой процессор», но внутри файла .csproj есть «AnyCPU», поэтому в Jenkins или командной строке будет использоваться «AnyCPU». –