Visual Studio项目:如何以包括只有一个配置的参考?(Visual Studio Proj

2019-07-20 02:38发布

信封:VS2008 C#项目

我需要建立我的应用程序在2种不同的环境中使用。 在这些环境中的一个,我需要使用第三方DLL组件。

我可以分离使用了利用块#如果这个DLL的代码。 但我怎么有条件地包含在CS项目文件中的参考DLL?

编辑:womp在他的评论好点。 我变成了另外一个问题 :请问参考DLL在所有如果它从来没有所谓的装? TIA,

Answer 1:

卸载该项目并将其作为.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>

注意最后一个引用现在有一个条件。



Answer 2:

我知道这是旧的文章,但如果任何人发现它,他们找到答案之前,像我一样,那就是:你需要使用“选择”元素在项目文件中:

链接

您可以在一个地方同时定义条件引用和条件编译,所以你不必使用#如果在你的代码。

它的工作原理在SharpDevelop的,而且因为它是MS的文档,我认为它在Visual Studio中。



Answer 3:

下面,在的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>


Answer 4:

对这个问题的启发,并回答如下所示 ,你可以添加<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


文章来源: Visual Studio Project: How to include a reference for one configuration only?