Свойство конфигурации задачи MSBuild - PullRequest
19 голосов
/ 06 апреля 2009

У меня есть три решения Visual Studio. Первый настроен для сборки как Release , а два других настроены для сборки как Debug .

При запуске простого сценария MSBuild , в котором явно указывается конфигурация для сборки (отладка), первый проект по-прежнему создается как Release.

Пример сценария:

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

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

Ответы [ 4 ]

27 голосов
/ 04 января 2012

Что касается вопроса написания платформы для любого процессора, то выясняется, что существует проблема, о которой уже сообщалось в других статьях StackOverflow и Microsoft. Это влияет на MSBuild в целом, и вся проблема документации Platform опущена в моем dotnet v3.5 MSBuild / help. Так что, возможно, это кому-то поможет!

Ссылки

«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" - без пробела

8 голосов
/ 08 апреля 2009

ОК, я нашел проблему. Ничего не связано с MSBuild, а решение строится. Публикация, чтобы спасти кому-то душевную боль.

По какой-либо причине конфигурация отладки была настроена в решении следующим образом:

альтернативный текст http://www.freeimagehosting.net/uploads/cad0bdf1c0.jpg

Так что MSBuild тоже делал только то, что ему сказали ...

8 голосов
/ 09 июля 2010

Я получаю эту же ошибку. Решение состояло в том, чтобы явно указать целевую платформу с помощью:

msbuild.exe /p:Platform="Any CPU"

Это начало происходить только после того, как я обновился до Windows 7, поэтому я думаю, что это как-то связано с этим.

1 голос
/ 07 апреля 2009

Вы пробовали запустить с / v: diag?

Кроме того, в сторону: я думаю, вы хотите "AnyCPU" (без пробела).

...