Env .: VS2008 C#項目Visual Studio項目:如何僅爲一個配置包含參考?
我需要構建我的應用程序以用於2個不同的環境。在其中一種環境中,我需要使用第三方DLL程序集。
我可以使用#if塊隔離使用此DLL的代碼。但是,我如何有條件地在CS項目文件中包含對DLL的引用?
編輯:womp在他的評論中有一個很好的觀點。我變成了一個separate question:如果從未調用被引用的DLL,會不會被加載? TIA,
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