Visual Studio中仅调试的类和资源 - 是否可能?

izb*_*izb 3 c# debugging visual-studio-2008 visual-studio

是否可以在Visual Studio中向项目添加一个类,并且只为该项目的Debug配置构建该类?也就是说,它根本不会出现在Release版本中.

如果可能的话,是否也可以为资源做同样的事情?

我正在考虑仅在Debug配置中运行但是从程序集中删除以便发布的测试类.

Sim*_*ens 6

您可以使用#DEBUG(请参阅Jon的答案)来学习课程.

对于资源,您可以编辑MSBuild脚本文件,以根据所选的构建模式有条件地包含项目的各个部分.

.csproj文件是一个XML MSBuild脚本,如果在文本编辑器中打开它,您应该在项目的所有部分中找到它.如果您可以找到要从某些构建中排除的部分,则可以使用Condition属性对其进行标记.例如,要仅为Debug配置构建ItemGroup,您可以这样做:

<ItemGroup Condition=" '$(Configuration)' == 'Debug' " ...
Run Code Online (Sandbox Code Playgroud)

您应该能够查看这个并找到要排除的资源,并向它们或其父组添加类似的Condition属性.

但是,我建议您使用单独的程序集进行测试,并且不要让它与主程序集混淆.


Jon*_*eet 5

课程很简单:

#if DEBUG
// Put your class here
#endif
Run Code Online (Sandbox Code Playgroud)

虽然不确定资源......我怀疑通过手动编辑项目文件是可行的,但不是在 Visual Studio 中。

不过,我不会出于测试目的而这样做 - 我鼓励您使用单独的程序集进行测试。除此之外,这意味着您可以通过针对发布版本进行测试来测试您发布的内容。如果您需要访问内部类型/成员,您始终可以使用[InternalsVisibleTo]来授予从生产程序集到测试程序集的内部访问权限。事实上,我怀疑这是该属性最常见的用法:)