有没有一种方法来指定基于Visual Studio中的生成configuration的程序集引用?
我有一个项目,通过他们的API为另一个应用程序增加了一些可扩展性。 但是,我希望能够为其应用程序的多个版本使用相同的项目,因为大部分代码是相同的。
但是,每个版本的应用程序都需要参考该版本软件的正确汇编。 他们将程序集加载到GAC中,所以即使我可以根据构buildconfiguration来指定要使用的程序集版本 ,我也没关系。 有没有办法从VS内部做到这一点,或者我需要一个外部构build工具?
有办法做到这一点,但你将不得不手工编辑你的项目文件。 项目文件可以在许多元素中应用一个Condition
属性,包括用于引用的元素。
您可以将这些添加到您的引用来指定何时应该使用引用:
<Reference Include="Product, Version=1.0.0.0" Condition="'$(Configuration)'=='V1'"> </Reference> <Reference Include="Product, Version=2.0.0.0" Condition="'$(Configuration)'=='V2'"> </Reference> <Reference Include="Product, Version=3.0.0.0" Condition="'$(Configuration)'=='V3'"> </Reference>
然后定义几个构buildconfiguration( V1
, V2
, V3
),每个引用将仅包含在相关的选定构buildconfiguration中。
将这个与代码中的条件编译符号和#if
语句结合起来,你就可以做你想做的事情。
如果你这样做的话,要小心一点,就是Visual Studio很容易从项目文件中删除条件属性。
<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\SharedLibs\log4net\$(Platform)\$(Configuration)\log4net.dll</HintPath> </Reference>
您可以用属性replace提示path:
$(configuration)相当于发布/debugging或任何其他configuration。 $(Platform)相当于x86 / x64 / Any CPU
如果你的configuration包括任何CPU,那么你将需要把单引号$(configuration)
另请参阅adrianbanks引用的条件选项