C# 是否可以在附加属性或属性项元数据(特别是配置属性)中使用msbuild批处理。?
我试图在AdditionalProperties元数据中使用批处理来构建csproj,一个用于调试,另一个用于使用Configuration属性进行构建 传统上你会看到:C# 是否可以在附加属性或属性项元数据(特别是配置属性)中使用msbuild批处理。?,c#,visual-studio-2012,msbuild,C#,Visual Studio 2012,Msbuild,我试图在AdditionalProperties元数据中使用批处理来构建csproj,一个用于调试,另一个用于使用Configuration属性进行构建 传统上你会看到: <ItemGroup> <MyConfigurations Include="Release"/> <MyConfigurations Include="Debug"/> </ItemGroup> <Task> <MSBuild Projec
<ItemGroup>
<MyConfigurations Include="Release"/>
<MyConfigurations Include="Debug"/>
</ItemGroup>
<Task>
<MSBuild Projects="@(ProjectsToBuild)"
BuildInParallel="true"
Configurations="%(MyConfigurations.Identity)"
/>
</Task>
他们使用类似配置的
Config="%(MyConfigurations.Identity)".
我不知道配置从哪里来,也不知道他们为什么使用它。当我尝试使用它时,只会生成调试
如果我为csproj创建了一个单独的项目——一个用于Configuration=Debug,另一个用于Configuration=Release,那么它将按预期工作。但是我正在寻找一种方法来避免为了得到这两个版本而必须为.csproj创建两个单独的项
我尝试了很多东西,现在我有点困惑。除了上面的MSDN链接之外,我找不到任何关于配置参数的说明。我也有Sayad在Microsoft Build Engine手册中,我在那里找不到任何东西
我正在使用visual studio 13和12.0 toolsversion。好的,我觉得自己很笨。项目必须位于目标元素中才能进行批处理。换句话说,批处理只适用于动态项 所以像这样:
<Project ToolsVersion="12.0" DefaultTargets="CoreBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
...
<ItemGroup>
<MyConfigurations Include="Release"/>
<MyConfigurations Include="Debug"/>
</ItemGroup>
<ItemGroup>
<ProjectsToBuild Include="$(SourcePath)\somedir\project1.csproj">
<AdditionalProperties>Configuration=%(MyConfigurations.Identity);PlatformTarget=x86</AdditionalProperties>
</ProjectsToBuild>
<ProjectsToBuild Include="$(RootPath)\someOtherMSbuildProject.proj">
<AdditionalProperties>
PackageRoot=$(PackageRoot);
PackagePassword=$(PackagePassword);
</AdditionalProperties>
</ProjectsToBuild>
</ItemGroup>
<Target Name="CoreBuild">
<MSBuild
Projects="@(ProjectsToBuild)"
BuildInParallel="true"
/>
</Target>
<Target>
<ItemGroup>
<ProjectsToBuild2 Include="$(SourcePath)\RapidCoreConfigurator\RapidCoreConfigurator.csproj">
<AdditionalProperties>Configuration=%(MyConfigurations.Identity);PlatformTarget=x86</AdditionalProperties>
</ProjectsToBuild2>
</ItemGroup>
<Message Text="MyConfigurations: %(MyConfigurations.Identity)"/>
<MSBuild
Projects="@(ProjectsToBuild2)"
BuildInParallel="true"
/>
</Target>
我确实试过了,但一定是弄错了;我试了很多东西
我不知道为什么链接文章中的家伙使用Config而不是Configuration,但他可能犯了一个错误,或者是因为记性太差
<Target>
<ItemGroup>
<ProjectsToBuild2 Include="$(SourcePath)\RapidCoreConfigurator\RapidCoreConfigurator.csproj">
<AdditionalProperties>Configuration=%(MyConfigurations.Identity);PlatformTarget=x86</AdditionalProperties>
</ProjectsToBuild2>
</ItemGroup>
<Message Text="MyConfigurations: %(MyConfigurations.Identity)"/>
<MSBuild
Projects="@(ProjectsToBuild2)"
BuildInParallel="true"
/>
</Target>