【问题标题】:C# build based references基于 C# 构建的引用
【发布时间】:2017-10-24 01:39:23
【问题描述】:

场景 C# VS2013 我有一个包含 2 个项目 A 和 B 的解决方案,其中项目 A 引用了项目 B 中的类。

项目 B 包含相对静态的类,这些类是特定于环境的,以允许在这种情况下的生产环境中与特定环境进行交互。

我想使用基于开发环境的类创建项目 B 的克隆,并在使用开发配置构建时使用它而不是生产版本。

我不想以任何方式更改项目 A 代码库。

我怎样才能做到这一点?

【问题讨论】:

标签: c# visual-studio-2013


【解决方案1】:

这是相对容易实现的。它需要手动编辑您的一些项目文件。首先创建项目 B 的克隆,然后在编辑器中打开新的 csproj 文件并将项目 GUID 更改为新的(不要将其与项目类型 Guid 混淆),并为避免将来出现错误更改新的项目文件名。

在项目 A 中,唯一需要的更改与项目 B 的 csproj 参考相关,我们想让它们以某些环境/构建设置为条件,并根据它们选择生产或开发项目 B 参考。

下面我创建了 CppSharp 项目之一的项目参考部分的副本。当 DevelopmentBuild 环境或 MSBuild 属性为 false 时,对 CppSharp 项目的项目引用分为两个交替包含的对 CppSharp.csproj 的引用和对 DevelopmentBuild 设置为 True 时包含的 CppSharp.Dev.csproj 的引用。

  <ItemGroup>
    <ProjectReference Include="..\Core\CppSharp.csproj" Condition"$(DevelopmentBuild) != 'True'">
      <Project>{C600C309-B2CD-1D15-DBE6-0BBDC71253A3}</Project>
      <Name>CppSharp</Name>
    </ProjectReference>
    <ProjectReference Include="..\CoreDev\CppSharp.Dev.csproj" Condition"$(DevelopmentBuild) == 'True'">
      <Project>{C600C309-B2CD-1D15-DBE6-0BBDC71253A4}</Project>
      <Name>CppSharp</Name>
    </ProjectReference>
    <ProjectReference Include="..\AST\CppSharp.AST.csproj">
      <Project>{BC4C5C41-A8AF-EBE5-5135-249C3D77B768}</Project>
      <Name>CppSharp.AST</Name>
    </ProjectReference>
    <ProjectReference Include="..\Runtime\CppSharp.Runtime.csproj">
      <Project>{189FF169-0498-10BC-2DCA-F5401922F0C7}</Project>
      <Name>CppSharp.Runtime</Name>
    </ProjectReference>
    <ProjectReference Include="..\..\build\vs2015\projects\CppSharp.Parser.CLI.vcxproj">
      <Project>{C75EB680-33C0-938E-BC2D-DA40288ECA4D}</Project>
      <Name>CppSharp.Parser.CLI</Name>
    </ProjectReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

【讨论】:

  • 谢谢,我会试一试
  • 辛苦了!谢谢!!
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多