我有一個功能,我只想發生在調試,但不想運送該功能需要的DLL。這可能嗎?C#在#if中使用語句調試但不是裝運
我:
當然#if DEBUG
using MyAssembly;
#endif
中MyAssembly程序是由該項目引用。我希望MyAssembly.dll不能在發佈模式下發貨。這可以實現嗎?將在這方面使用條件(「DEBUG」)的幫助?
我有一個功能,我只想發生在調試,但不想運送該功能需要的DLL。這可能嗎?C#在#if中使用語句調試但不是裝運
我:
當然#if DEBUG
using MyAssembly;
#endif
中MyAssembly程序是由該項目引用。我希望MyAssembly.dll不能在發佈模式下發貨。這可以實現嗎?將在這方面使用條件(「DEBUG」)的幫助?
不需要的引用通常會被編譯器自動刪除,但是:通過更改csproj以在PropertyGroup
上包含Condition
,您可以更加明確。喜歡的東西:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<Reference Include="YourReference" />
</PropertyGroup>
(也有可能是一個<PackageReference>
等)
這是完全正常的把一個using
指令在#if DEBUG
部分,編譯調試時將刪除指令。
但是,這只是故事的一部分;它不會單獨完成你的目標。 Visual Studio中的解決方案資源管理器還有一個參考文獻部分。您還需要刪除程序集的引用,或者在構建時仍會包含該引用。
我不記得任何在Visual Studio的用戶界面,可以讓你這樣做,但我希望它應該有可能以某種方式,如果你手動編輯項目文件(它只是一個MSBuild文件)。就我個人而言,我很努力地避免做需要手動編輯項目文件的事情。 Visual Studio希望能夠擁有這些文件,並且最終可能會產生衝突,您和Visual Studio將在其中更改對方的更改。
感謝您的意見 – Bati
'使用'指令不會在程序集方面做任何事情 - 它們只是關於名稱空間。您可能希望在項目文件中使程序集引用有條件...儘管如果沒有任何代碼*引用*以在發佈模式下的程序集代碼,那麼C#編譯器將不會使用該引用,至於I'意識到。 (你應該檢查一下 - 不管怎樣,我都會調整參考值來驗證) –
謝謝!感謝Jon的反饋! – Bati