基于 C# 构建的参考

C# build based references

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

项目 B 包含相对静态的 类,它们是特定于环境的,以允许在本案例生产中的特定环境中进行接口。

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

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

我怎样才能做到这一点?

这相对容易实现。它需要手动编辑您的一些项目文件。首先创建项目 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" />