我有3个项目的配置:
- 项目A:调试| AnyCPU,发布| AnyCPU
- 项目B:调试| AnyCPU,发布| AnyCPU
- 项目C:调试| X86,调试| 64位,发布| 86,发布| 64
项目C具有的B依赖和B有相关性的。 (A < - 乙< - C)
我用* .bat文件,从命令行建立自己的:
msbuild A.csproj /target:Build /property:Configuration=Debug;Platform=AnyCPU /verbosity:minimal
msbuild A.csproj /target:Build /property:Configuration=Release;Platform=AnyCPU /verbosity:minimal<br/>
msbuild B.csproj /target:Build /property:Configuration=Debug;Platform=AnyCPU /verbosity:minimal
msbuild B.csproj /target:Build /property:Configuration=Release;Platform=AnyCPU /verbosity:minimal
msbuild C.csproj /target:Build /property:Configuration=Debug;Platform=x86 /verbosity:minimal
msbuild C.csproj /target:Build /property:Configuration=Release;Platform=x86 /verbosity:minimal
msbuild C.csproj /target:Build /property:Configuration=Debug;Platform=x64 /verbosity:minimal
msbuild C.csproj /target:Build /property:Configuration=Release;Platform=x64 /verbosity:minimal
并且接受错误:
C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(609,5):错误:OutputPath属性未设置项目 'A.csproj'。 请检查以确保您已指定配置和平台的有效组合为这个项目。 配置=“调试”平台=“86”。 您可能会看到这条消息,因为你正在试图建立没有办法解决文件的项目,并且已经指定了非默认配置或平台不适用于本项目的存在。 [A.csproj] C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets(609,5):错误:OutputPath属性未设置项目 'B.csproj'。 请检查以确保您已指定配置和平台的有效组合为这个项目。 配置=“调试”平台=“86”。 您可能会看到这条消息,因为你正在试图建立没有办法解决文件的项目,并且已经指定了非默认配置或平台不适用于本项目的存在。 [B.csproj]
我发现我的问题的解决方案。 使用选择在* .csproj的文件元素通过Visual Studio或通过检测的MSBuild建设和使用的参考(而不是ProjectReference)进行的MSBuild。
<Choose>
<When Condition="'$(BuildingInsideVisualStudio)' == 'true'">
<ItemGroup>
<ProjectReference Include="A.csproj">
<Project>{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}</Project>
<Name>A</Name>
<Private>True</Private>
</ProjectReference>
<ProjectReference Include="B.csproj">
<Project>{BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB}</Project>
<Name>B</Name>
<Private>True</Private>
</ProjectReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx, processorArchitecture=MSIL">
<HintPath>A.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="B, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx, processorArchitecture=MSIL">
<HintPath>B.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
</Otherwise>
</Choose>
如果您在您的解决方案文件中定义一个自定义生成的配置可以使这项工作。
打开在Visual Studio中的解决方案,然后打开配置管理解决方案。 在活动解决方案平台下拉会有<New...>
选项,将允许您为解决方案创建x86和x64平台。 您创建后他们选择每一个在同一下拉,并确保在列表中你有Any CPU
为您的项目A和B,项目C已相应的x86或x64选择。 另外,还要确保构建复选框被选中。
现在切换有效的解决方案配置,以释放和定义这些额外的平台一样。
之后你做,你就可以建立所有3个项目仅指定中的MSBuild命令行的解决方案文件:
msbuild ABC.sln /target:Build /property:Configuration=Debug;Platform=x86 /verbosity:minimal
msbuild ABC.sln /target:Build /property:Configuration=Release;Platform=x86 /verbosity:minimal
msbuild ABC.sln /target:Build /property:Configuration=Debug;Platform=x64 /verbosity:minimal
msbuild ABC.sln /target:Build /property:Configuration=Release;Platform=x64 /verbosity:minimal
你可以尝试建立项目devenv.exe的命令行。 我认为,这不会让你遇到的问题,但我还记得一些有关此版本的选项被弃用,有时绞死没有理由。 我写了这个作为一个选项,只是因为其他两个是不适合我满意。