Visual Studio项目:如何仅为一个配置包含参考?
Env .: VS2008 C#项目Visual Studio项目:如何仅为一个配置包含参考?
我需要构建我的应用程序以用于2个不同的环境。在其中一种环境中,我需要使用第三方DLL程序集。
我可以使用#if块隔离使用此DLL的代码。但是,我如何有条件地在CS项目文件中包含对DLL的引用?
编辑:womp在他的评论中有一个很好的观点。我变成了一个separate question:如果从未调用被引用的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>
通知最后引用现在有一个条件。
这也是我的想法,所以我试了一下。在我的情况下,导致引用在所有配置中失败(系统表现为无法找到程序集)。 – 2009-09-29 17:25:00
是的问题是,IDE忽略条件的东西,在这种情况下,它需要它的各种原因(intellisense,对象浏览器...),所以它会抱怨。此外,您必须有条件地调用该程序集,否则编译器将无法找到代码所引用的程序集。 – Coincoin 2009-09-29 17:32:52
下,在的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>
您可以直接在HintPath中添加'$(Configuration)'变量来简化该操作: '
我知道这是旧的文章,但如果任何人发现它,他们找到答案之前,像我做到了,那就是:你需要使用“选择”元素在项目文件:
您可以在一个地方同时定义条件引用和条件编译,所以你不必使用#如果在你的代码中。
它在SharpDevelop中工作,并且由于它是MS的文档,我假定它在Visual Studio中有效。
为什么你不把它放在两个地方,使基于dll配置的使用,并避免复杂的事情?除非必要,否则DLL不会被加载。第三方DLL是否存在许可问题? – womp 2009-09-29 16:59:38
womp,其实很好的问题。 (我不分发第三方DLL,它由制造商安装在某些系统上)。 – 2009-10-01 12:37:11