C#在#if中使用语句调试但不是装运
我有一个功能,我只想发生在调试,但不想运送该功能需要的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