场景 C#VS2013 我有一个带有2个项目A和B的解决方案,项目A引用了项目B中的类。
项目B包含相对静态的类,这些类是特定于环境的,允许在这种情况下生成特定环境中的接口。
我希望使用基于开发环境的类创建Project B的克隆,并在使用dev配置构建时使用它而不是生产版本。
我不想以任何方式改变Project A代码库。
我怎样才能做到这一点?
答案 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" />