信封:VS2008 C#项目
我需要建立我的应用程序在2种不同的环境中使用。 在这些环境中的一个,我需要使用第三方DLL组件。
我可以分离使用了利用块#如果这个DLL的代码。 但我怎么有条件地包含在CS项目文件中的参考DLL?
编辑:womp在他的评论好点。 我变成了另外一个问题 :请问参考DLL在所有如果它从来没有所谓的装? TIA,
信封:VS2008 C#项目
我需要建立我的应用程序在2种不同的环境中使用。 在这些环境中的一个,我需要使用第三方DLL组件。
我可以分离使用了利用块#如果这个DLL的代码。 但我怎么有条件地包含在CS项目文件中的参考DLL?
编辑:womp在他的评论好点。 我变成了另外一个问题 :请问参考DLL在所有如果它从来没有所谓的装? TIA,
卸载该项目并将其作为.XML
找到参照商品标签,并添加条件属性。
例如:
<ItemGroup>
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml" />
<Reference Include="MyUtilities.Debug"
Condition="'$(Configuration)'=='Debug'"/>
</ItemGroup>
注意最后一个引用现在有一个条件。
我知道这是旧的文章,但如果任何人发现它,他们找到答案之前,像我一样,那就是:你需要使用“选择”元素在项目文件中:
链接
您可以在一个地方同时定义条件引用和条件编译,所以你不必使用#如果在你的代码。
它的工作原理在SharpDevelop的,而且因为它是MS的文档,我认为它在Visual Studio中。
下面,在的csproj文件中引用的ItemGroup VS 2008对我的作品中: -
<Reference Include="DRLClasses, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" Condition=" '$(Configuration)' == 'Debug' ">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\Visual Studio User Library\Debug\DRLClasses.dll</HintPath>
</Reference>
<Reference Include="DRLClasses, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" Condition=" '$(Configuration)' == 'Release' ">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\Visual Studio User Library\Release\DRLClasses.dll</HintPath>
</Reference>
对这个问题的启发,并回答如下所示 ,你可以添加<Choose>
和<When Condition>
周围的部分命令你想成为有条件地运行。 例如:
<Choose>
<When Condition="$(USEDLL) == true">
<ItemGroup>
<EmbeddedResource Include="test.dll">
<LogicalName>test.dll</LogicalName>
</EmbeddedResource>
</ItemGroup>
</When>
</Choose>
然后在命令行,只需使用/p
财产的MSBuild是这样的:
MSBuild "C:\myproject\myproject.sln" /p:USEDLL=true
...或者,如果你不想要的DLL,简单地说:
MSBuild "C:\myproject\myproject.sln" /p:USEDLL=false