.NET中的选择性资源编译?

时间:2009-04-13 08:44:51

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

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

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

另外,我在我的工作中使用VS2005和2008,主要是VB,尽管使用C#也没有任何问题。

2 个答案:

答案 0 :(得分:1)

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

<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)变量之外的其他内容。您可以检查文件/文件夹的存在,使用其他任务的输出,或者完全使用其他变量。

答案 1 :(得分:0)

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

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