代码之家  ›  专栏  ›  技术社区  ›  izb

在visual studio中只调试类和资源-这可能吗?

  •  3
  • izb  · 技术社区  · 16 年前

    是否可以在visual studio中将类添加到项目中,并仅为项目的调试配置生成该类?也就是说,它根本不会出现在发布版本中。

    如果可能,是否也可以对资源进行同样的操作?

    我特别考虑的是只在调试配置中运行但从程序集中删除以供发布的测试类。

    4 回复  |  直到 15 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    您可以使用调试(请参见 Jon's answer )为了上课。

    对于资源,可以编辑msbuild脚本文件,以根据所选生成模式有条件地包含项目的部分。

    .csproj文件是一个xml msbuild脚本,如果在文本编辑器中打开它,应该可以在项目的所有部分中找到。如果可以找到要从某些生成中排除的零件,则可以使用Condition属性对其进行标记。例如,要使itemgroup只为调试配置生成,您可以执行以下操作:

    <ItemGroup Condition=" '$(Configuration)' == 'Debug' " ...
    

    您应该能够对此进行检查,找到要排除的资源,并向这些资源或其父组添加类似的条件属性。

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

        2
  •  3
  •   Jon Skeet    16 年前

    上课很容易:

    #if DEBUG
    // Put your class here
    #endif
    

    但不确定资源…我怀疑手工编辑项目文件是可行的,但不是在visual studio中。

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

        3
  •  3
  •   Bolek Tekielski    16 年前

    至于资源,您确实需要手动修改*.csproj,更改

    <EmbeddedResource Include="Components\AdmittanceChart.resx">
      <DependentUpon>AdmittanceChart.cs</DependentUpon>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    

    到

    <EmbeddedResource Condition=" '$(Configuration)|$(Platform)' == 'Debug' " Include="Components\AdmittanceChart.resx">
      <DependentUpon>AdmittanceChart.cs</DependentUpon>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    

    但是,正如乔恩所说,这不一定是好的做法。

        4
  •  1
  •   Giorgi    16 年前

    你可以用 Conditional 属性也是。本文描述 Conditional Compilation