Свойство конфигурации задачи MSBuild
У меня есть три решения Visual Studio. Первый сконфигурирован для сборки как Release, а два других - для сборки как Debug.
При запуске простого MSBuild script явно указывая конфигурацию для сборки (отладка), первый проект по-прежнему строится как Release.
Пример script:
<Target Name="Build">
<ItemGroup>
<ProjectToBuild Include="$(SolutionsPath)\Solution1.sln"/>
<ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln"/>
<ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln"/>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)"
Targets="Rebuild"
Properties="Configuration=Debug;Platform=Any CPU"/>
</Target>
Я попробовал варианты выше, такие как следующие, но я всегда получаю тот же результат.
<Target Name="Build">
<ItemGroup>
<ProjectToBuild Include="$(SolutionsPath)\Solution1.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
<ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
<ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)"
Targets="Rebuild"
Properties="Platform=Any CPU"/>
</Target>
Я отмечаю, что есть аналогичный вопрос, Задача MSBuild - сборка сбоев, потому что одно решение построено в версии вместо отладки, но это характерно для TFS и Teambuild. Я говорю о чистом MSBuild с простым файлом проекта, созданным с нуля.
Как я могу исправить эту проблему?
Ответы
Ответ 1
OK Я нашел проблему. Ничего не связано с MSBuild, но вместо этого построено решение. Проводка, чтобы спасти кого-то еще от сердечной боли.
По какой-то причине конфигурация Debug была сконфигурирована в решении следующим образом:
alt text http://www.freeimagehosting.net/uploads/cad0bdf1c0.jpg
Итак, MSBuild выполнял то, что было сказано тоже...
Ответ 2
Что касается вопроса о написании платформы на любом процессоре, выясняется, что есть проблема, уже упоминавшаяся здесь в StackOverflow и Microsoft. Это влияет на MSBuild в целом, и вся проблема документации Platform
опущена в моей MSDN-программе dotnet v3.5. Так что, возможно, это поможет кому-то!
Ссылки
"AnyCPU" и "Любой процессор" в TFS 2010
Несогласованная платформа MSBuild для "Любой процессор" между решением и проектом
Closed as Won't Fix
Type: Bug
ID: 503935
Opened: 10/26/2009 1:29:12 PM
Access Restriction: Public
0 Workaround(s)
5 User(s) can reproduce this bug
Свойство MSBuild Platform
имеет другое значение для Any CPU
в зависимости от того, являетесь ли вы построением решения или созданием проекта.
- для Решение - используйте Platform="Any CPU"
- с пробелом
- для проекта - используйте Platform="AnyCPU"
- без пробела
Ответ 3
Я получал такую же ошибку. Решение заключалось в том, чтобы явно указать целевую платформу с помощью:
msbuild.exe /p:Platform="Any CPU"
Это только началось с тех пор, как я обновился до Windows 7, поэтому я думаю, что это как-то связано с этим.
Ответ 4
Пробовали ли вы работать с /v: diag?
Кроме того, в стороне: я думаю, вы хотите "AnyCPU" (без пробела).