Подтвердить что ты не робот

Свойство конфигурации задачи 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 с простым файлом проекта, созданным с нуля.

Как я могу исправить эту проблему?

4b9b3361

Ответ 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" (без пробела).