Não consigo criar várias configurações de um projeto ao mesmo tempo no Visual Studio, mas sim com o MSBuild

Quero criar duas configurações ao mesmo tempo de um projeto. Digamos que quando eu quero criar a versão de lançamento, mas quero criar até a versão de depuração (o oposto não é verdadeiro

Começando comUse uma única solução do Visual Studio para criar x86 e x64 ao mesmo temp Tentei adicionar ao .csproj:

<Target Name="AfterBuild">
    <MSBuild Condition=" '$(Configuration)' == 'Release' " Projects="$(MSBuildProjectFile)" Properties="Configuration=Debug" RunEachTargetSeparately="true" />
</Target>

E se eu tentar criar o projeto através do MSBuild,

MSBuild ConsoleApplication64.csproj /p:Configuration=Release /p:Platform=x86

it funciona corretamente. As duas configurações foram criadas corretamente e tudo está be

O problema é que se eu tentar compilá-lo com o Visual Studio: a versão de lançamento é criada corretamente e, em seguida, começa a compilar a versão de depuração, e isso me dá:

Copiar arquivo de "obj \ x86 \ Debug \ ConsoleApplication64.exe" para "bin \ Debug \ ConsoleApplication64. C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (2868,9): erro MSB3021: Não foi possível copiar o arquivo "obj \ x86 \ Debug \ ConsoleApplication64.exe" para "bin \ Debug \ ConsoleApplication64.exe". Não foi possível encontrar o arquivo 'obj \ x86 \ Debug \ ConsoleApplication64.exe'.

Pré-condições:

Windows XP SP3 ITAisual Studio 2010 SP1 Inglês O projeto é um aplicativo de console vazio para C # 4.0 (tecnicamente não é, mas posso reproduzir o problema com isso

(Observe que, para ter essas mensagens, ativei a verbosidade: normal no menuFerramenta → Opções → Projetos e Soluções → Build and Run → MSBuild projeto compilação verbosidade de saída.

Depois de comparar a saída das duas execuções "meia", a diferença é que, na metade "funcional" docsc executável é chamado e, no outro, não é:

Lançamento metade:

Task "Csc" (TaskId: 13) c: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Csc.exe / noconfig / nowarn: 1701,1702 / nostdlib + / platform: x86 / errorreport: prompt / warn: 4 / define: TRACE / referência: "C: \ Programmi \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ Microsoft.CSharp.dll" / referência: "C: \ Programmi \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ mscorlib.dll "/ referência:" C: \ Programmi \ Assemblies de referência \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System.Core.dll "/ referência : "C: \ Programmi \ Assemblies de referência \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System.dll" / depuração: pdbonly / filealign: 512 / optimize + /out:obj\x86\Release\ConsoleApplication64.exe / target: exe Propriedades de Program.cs \ AssemblyInfo.cs "C: \ Documents and Settings \ referências de serviços \ localizações \ Temp.NETFramework, versão = v4.0, perfil = Client.AssemblyAttributes.cs" (TaskId: 13) Execução da tarefa "Csc" concluída. (TaskId: 13)

Debug half:

Task "Csc" (TaskId: 41) Concluído executando a tarefa "Csc". (TaskId: 41)

Depois de mais alguns testes, notei que, se as duas metades usarem o mesmoDefineConstants então não há nenhum problema e tudo funciona, mas se eles são diferentes (como na versão / depuração), não funciona. : -

questionAnswers(2)

yourAnswerToTheQuestion