【问题标题】:Selective resource compiling in .NET?.NET 中的选择性资源编译?
【发布时间】:2009-04-13 08:44:51
【问题描述】:

如何根据使用的编译常量选择要编译的资源?因此,如果 VAR1=0,那么我不会将 RESOURCE_A 添加到我的最终程序集中。

我四处搜索,但没有找到任何有关此的信息...我想我使用了错误的关键字,因为我怀疑以前没有人遇到过这个问题/怀疑。

另外,我在工作中同时使用 VS2005 和 2008,主要是 VB,虽然我在使用 C# 时也没有遇到任何问题。

【问题讨论】:

    标签: c# .net vb.net visual-studio


    【解决方案1】:

    您可以使用 MSBuild 元素完成此操作:

    <Choose>
        <When Condition=" '$(Configuration)'=='Debug' ">
            <ItemGroup>
                <EmbeddedResource Include="debug_resource.txt" />
            </ItemGroup>
        </When>
        <When Condition=" '$(Configuration)'=='retail' ">
            <ItemGroup>
                <EmbeddedResource Include="retail_resource.txt" />
            </ItemGroup>
        </When>
    </Choose>
    

    ...当然,您可以使用 $(Configuration) 变量以外的其他东西。您可以检查文件/文件夹是否存在,使用另一个任务的输出,或者完全使用不同的变量。

    【讨论】:

      【解决方案2】:

      编译常量只影响代码。您可以将这两种资源都添加到程序集中,并根据编译常量检索适当的资源。

      当然还有其他方法可以实现这一点 - 例如根据您定义的某些标准,在预构建事件中复制适当的资源。

      【讨论】:

      • 那么,无法为.NET 上的资源定义编译常量?此外,并不总是需要添加所有资源,因为:A) 它们增加了最终程序集的大小开销。 B) 可能有些资源你不想编译到某些版本的软件的程序集中
      猜你喜欢
      • 2020-05-30
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多