【问题标题】:Visual Studio not respecting msbuild schemaVisual Studio 不尊重 msbuild 架构
【发布时间】:2018-02-06 14:43:39
【问题描述】:

使用 Visual Studio 2017,我试图有条件地包含一个基于配置的项目。由于MSBUILD/Visual Studio集成的问题,我在相关项目的csproj中添加了Choose/When,而不是直接在项目引用上添加条件(参见this中的备注)

但是,通过 Visual Studio 构建时不遵守构建顺序(解决方案已关闭并重新打开以确保已设置配置)。

有人遇到过这个问题吗?

选择/何时如下所示:

<Choose>
    <When Condition="'$(Configuration)' == 'MyConfiguration'">
      <ItemGroup>
        <ProjectReference Include="..\Project\MyProject.sqlproj">
          <Name>MyProject</Name>
          <Project>{ece60b8e-84ad-4c4d-94d3-97a1fb1a5d91}</Project>
          <Private>True</Private>
        </ProjectReference>
      </ItemGroup>
    </When>
    <Otherwise>
      <ItemGroup>
        <ProjectReference Include="..\Project\MyProject2.sqlproj">
          <Name>MyProject2</Name>
          <Project>{ece70c8e-84ad-4c4d-94d3-97a1fb1a5d93}</Project>
          <Private>True</Private>
        </ProjectReference>
      </ItemGroup>  
    </Otherwise>
</Choose>

【问题讨论】:

  • 项目 guid 在这两种情况下是否与引用的项目之一匹配?
  • @MartinUllrich 确实如此......
  • @DOMZE,这个问题有什么更新吗?你解决了这个问题吗?如果没有,请告诉我有关此问题的最新信息吗?
  • @LeoLiu-MSFT 我没有时间重试,但我会用我有的和没有的任何问题来更新这个问题。非常感谢!
  • @DOMZE,我期待您的回音:)

标签: visual-studio msbuild


【解决方案1】:

但是,通过visual studio构建时不遵守构建顺序

我已经使用您的代码 sn-p 创建了一个示例,但它在我这边运行良好。由于没有构建日志,我想为您提供一些故障排除,以帮助您找到此问题的原因。

首先,我注意到您从同一个项目文件夹..\Project\.. 中引用了不同的项目,您能确认这是正确的吗?您是否将项目文件MyProject.sqlprojMyProject2.sqlproj 移动到同一文件夹Project?如果不是,请确保ProjectReference的路径正确,下面是我的代码sn-p:

  <Choose>
    <When Condition="'$(Configuration)' == 'Test'">
      <ItemGroup>
        <ProjectReference Include="..\MyProject\MyProject.sqlproj">
          <Name>MyProject</Name>
          <Project>{529deb62-9f35-4594-8627-203b19d7cb6d}</Project>
          <Private>True</Private>
        </ProjectReference>
      </ItemGroup>
    </When>
    <Otherwise>
      <ItemGroup>
        <ProjectReference Include="..\MyProject2\MyProject2.sqlproj">
          <Name>MyProject2</Name>
          <Project>{a6db4708-27d6-40b2-824e-f469372622d9}</Project>
          <Private>True</Private>
        </ProjectReference>
      </ItemGroup>
    </Otherwise>
  </Choose>

其次,确保所有项目的配置都是一样的,比如我所有项目的配置都是Test

以上条件项目参考,项目MyProject.sqlproj仅在配置为Test时构建,否则,项目MyProject2.sqlproj将被构建:

如果以上对你没有帮助,请分享构建日志以及你做了什么,我会继续关注。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 2020-06-12
    • 2017-12-05
    • 1970-01-01
    • 2018-10-26
    • 2014-08-18
    • 2015-04-10
    • 1970-01-01
    相关资源
    最近更新 更多