我有一个功能,我只想在Debug上发生,但不想发送此功能所需的dll。这可能吗?
我有:
#if DEBUG
using MyAssembly;
#endif
当然,项目正在引用MyAssembly。我希望MyAssembly.dll不会在发布模式下发货。可以实现吗?使用Conditional(" DEBUG")会在这方面有所帮助吗?
答案 0 :(得分:8)
编译器通常会自动删除不需要的引用,但是:通过更改csproj以在Condition
上包含PropertyGroup
,您可以更加明确。类似的东西:
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
<Reference Include="YourReference" />
</PropertyGroup>
(也可能是<PackageReference>
等)
答案 1 :(得分:5)
将#if DEBUG
指令放在<cstdint>
部分中是完全正确的,并且将在编译为调试时删除该指令。
但是,这只是故事的一部分;它本身不会实现你的目标。 Visual Studio中的解决方案资源管理器还具有引用部分。您还需要删除程序集的引用,否则在构建时仍会包含它。
我不记得Visual Studio用户界面中可以执行此操作的任何内容,但我希望如果您手动编辑项目文件(它只是一个MSBuild文件),它应该是可能的。 。就个人而言,我非常努力避免做需要手动编辑项目文件的事情。 Visual Studio希望能够拥有这些文件,并且您最终可能会创建冲突,而您和Visual Studio会相互覆盖其中的更改。