基于C#构建的引用

时间:2017-10-24 01:39:23

标签: c# visual-studio-2013

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

项目B包含相对静态的类,这些类是特定于环境的,允许在这种情况下生成特定环境中的接口。

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

我不想以任何方式改变Project A代码库。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

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