Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以在附加属性或属性项元数据(特别是配置属性)中使用msbuild批处理。?_C#_Visual Studio 2012_Msbuild - Fatal编程技术网

C# 是否可以在附加属性或属性项元数据(特别是配置属性)中使用msbuild批处理。?

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

我试图在AdditionalProperties元数据中使用批处理来构建csproj,一个用于调试,另一个用于使用Configuration属性进行构建

传统上你会看到:

<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>