Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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# 在TFSBuild.Proj文件中,如何<;ConfigureToBuild>;适用于任何CPU和x86平台?_C#_Msbuild - Fatal编程技术网

C# 在TFSBuild.Proj文件中,如何<;ConfigureToBuild>;适用于任何CPU和x86平台?

C# 在TFSBuild.Proj文件中,如何<;ConfigureToBuild>;适用于任何CPU和x86平台?,c#,msbuild,C#,Msbuild,我有一个MyProject.sln项目 其中有两级图书馆项目和一级窗口服务项目 编译器在任何CPU平台上构建类库项目,以及在X86平台上构建窗口服务项目 我将如何设置,以便根据我在项目“MyProjectClass.csproj”文件中设置的所选平台执行构建 这是TFSBuild.Proj文件的代码 <SolutionToBuild Condition="'$(BuildMyProject)'=='True'" Include="$(SolutionRoot)/MyProj

我有一个MyProject.sln项目

其中有两级图书馆项目一级窗口服务项目

编译器在任何CPU平台上构建类库项目,以及在X86平台上构建窗口服务项目

我将如何设置,以便根据我在项目“MyProjectClass.csproj”文件中设置的所选平台执行构建

这是TFSBuild.Proj文件的代码

 <SolutionToBuild Condition="'$(BuildMyProject)'=='True'"
       Include="$(SolutionRoot)/MyProject/MyProject.sln">
      <Targets>Build</Targets>
      <Properties></Properties>
    </SolutionToBuild>

建造
代码

$BuildFlavor='Release'

     <ConfigurationToBuild Include="$(BuildFlavor)|Any CPU">
          <FlavorToBuild>$(BuildFlavor)</FlavorToBuild>
          <PlatformToBuild>Any CPU</PlatformToBuild>
        </ConfigurationToBuild>
<ConfigurationToBuild Include="$(BuildFlavor)|x86">
          <FlavorToBuild>$(BuildFlavor)</FlavorToBuild>
          <PlatformToBuild>x86</PlatformToBuild>
        </ConfigurationToBuild>

$(BuildFlavor)
任何CPU
$(BuildFlavor)
x86

MSBuild尝试为这两个平台生成MyProject.sln。这需要更多的时间来构建。 结果表明,构建运行成功,但未生成指定位置的Windows服务二进制文件

但是,

当我把我的Windows服务项目构建平台从x86改为任何CPU时。现在它工作正常。所有三个项目二进制文件都生成了,我把它放在我的$DropLocation中,但是

[1] 有没有其他方法可以解决这个问题

[2] TFSBuild是否只在一个平台上执行MSBuild编译

[3] 是否要求一个.sln项目的所有子项目平台都相同?

修改您的解决方案并将您的配置更改为:

<ConfigurationToBuild Include="$(BuildFlavor)|Mixed Platforms">
  <FlavorToBuild>$(BuildFlavor)</FlavorToBuild>
  <PlatformToBuild>Mixed Platforms</PlatformToBuild>
</ConfigurationToBuild>

$(BuildFlavor)
混合平台
如果您无权更改解决方案文件,请尝试以下想法:

  • 生成*.csproj文件而不是解决方案文件
  • 使用MSBuild任务生成项目(覆盖生成目标)
  • 修改您的解决方案并将您的配置更改为:

    <ConfigurationToBuild Include="$(BuildFlavor)|Mixed Platforms">
      <FlavorToBuild>$(BuildFlavor)</FlavorToBuild>
      <PlatformToBuild>Mixed Platforms</PlatformToBuild>
    </ConfigurationToBuild>
    
    
    $(BuildFlavor)
    混合平台
    
    如果您无权更改解决方案文件,请尝试以下想法:

  • 生成*.csproj文件而不是解决方案文件
  • 使用MSBuild任务生成项目(覆盖生成目标)

  • 我有一个类似的问题-TFSBuild的设置方式总是选择调试配置,我没有更改生成定义的权限。我希望在TFS构建中创建版本配置

    我的解决方案是编辑*.csproj文件

    此项工作的先决条件是相关TFS生成定义的生成过程参数(要生成的过程/项/要生成的配置)中的配置字段为空。如果您有权对其进行修改,则可以直接选择所需的配置,保存生成定义,并跳过以下解决方法的步骤

    解决方法的步骤(右键单击project):

  • 卸载项目
  • 编辑项目
  • 现在可以编辑项目文件了。定位

        <PropertyGroup>
                <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
                <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    
    
    调试
    任意CPU
    
    并将其更改为

        <PropertyGroup>
                <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
                <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    
    
    释放
    任意CPU
    
    最后,再次右键单击项目并选择:

  • 加载项目

  • 现在将一个新构建排队,它应该从
    Release
    创建它。同样,您可以输入您喜欢的任何其他配置,例如,您可以在Visual Studio中创建
    Release\u TFS
    ,然后插入它而不是Release。这将确保您在执行此操作之前为TFSBuild创建了一个单独的定义。

    我有一个类似的问题-TFSBuild的设置方式总是选择调试配置,而我没有更改生成定义的权限。我希望在TFS构建中创建版本配置

    我的解决方案是编辑*.csproj文件

    此项工作的先决条件是相关TFS生成定义的生成过程参数(要生成的过程/项/要生成的配置)中的配置字段为空。如果您有权对其进行修改,则可以直接选择所需的配置,保存生成定义,并跳过以下解决方法的步骤

    解决方法的步骤(右键单击project):

  • 卸载项目
  • 编辑项目
  • 现在可以编辑项目文件了。定位

        <PropertyGroup>
                <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
                <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    
    
    调试
    任意CPU
    
    并将其更改为

        <PropertyGroup>
                <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
                <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    
    
    释放
    任意CPU
    
    最后,再次右键单击项目并选择:

  • 加载项目

  • 现在将一个新构建排队,它应该从
    Release
    创建它。同样,您可以输入您喜欢的任何其他配置,例如,您可以在Visual Studio中创建
    Release\u TFS
    ,然后插入它而不是Release。这将确保您在执行此操作之前为TFSBuild创建了一个单独的定义。

    使用VisualStudio中的ConfigurationManager,并确保您在解决方案中启用了x86配置下的项目。我没有任何编码权限…只有TFSBuild.proj文件访问权限。所以请描述更多。请给我一些正确的链接,我将从那里开始工作使用VisualStudio中的ConfigurationManager,并确保您已启用项目以在解决方案中的x86配置下生成。我没有任何编码权限…只有TFSBuild.proj文件访问权限。所以请描述更多。给我一些正确的链接,从哪里开始工作我也会遵循它,但同样的事情发生了。我的二进制文件没有生成。我在代码中缺少了一些东西。但这并没有给我正确的输出。我也遵循它,但同样的事情发生了。我的二进制文件并没有生成。我在代码中缺少了一些东西。但这不是给我正确的输出。