如何为子目录中的 C# 文件编写 DependentUpon 子句?

Posted

技术标签:

【中文标题】如何为子目录中的 C# 文件编写 DependentUpon 子句?【英文标题】:How to write DependentUpon clauses for C# files in subdirectories? 【发布时间】:2013-09-26 21:53:56 【问题描述】:

我们正在尝试让我们的 C# 应用程序编译和运行 both

Visual Studio 10(带有 Microsoft 编译器)、Windows 和 在 Linux 上使用 gmcs 进行 MonoDevelop

但是,.csproj 文件中的类似部分(对于 Visual Studio):

<Compile Include="Foo\Bar.cs" />
<EmbeddedResource Include="Foo\Bar.resx">
    <DependentUpon>Bar.cs</DependentUpon>
</EmbeddedResource>

在它们与 MonoDevelop/gmcs 一起工作之前必须进行如下更改 (如果没有,在运行时,resources.GetObject() 会抛出一个MissingManifestResourceException):

<Compile Include="Foo\Bar.cs" />
<EmbeddedResource Include="Foo\Bar.resx">
    <DependentUpon>Foo\Bar.cs</DependentUpon>
</EmbeddedResource>

如何将其重写为他们都接受的形式? (当然,没有删除DependentUpon 元素。)

【问题讨论】:

【参考方案1】:

与此同时,我研究了几种处理这种情况的方法。

例如,it is apparently possible 添加具有值 $(VisualStudioVersion) != ''Condition 属性,以使它们以是否使用 Visual Studio 为条件。

但是,一时兴起(在阅读 this answer 之后)我尝试了一些完全不同的方法:我替换了嵌套的命名空间

namespace Baz

    namespace Bar
    
        [...]
    

带点命名空间符号:

namespace Baz.Bar

    [...]

并且MissingManifestResourceException 不再存在,即使是原来的DependentUpon 子句。

问题解决了,但我不知道为什么。

【讨论】:

以上是关于如何为子目录中的 C# 文件编写 DependentUpon 子句?的主要内容,如果未能解决你的问题,请参考以下文章

如何为泛型类编写 C# 扩展方法

如何为 MFC 中的多个按钮编写一个消息处理程序?

如何为 Unity3D 编写线程安全的 C# 代码?

如何为 C# 项目生成 .tlh 文件

C#:如何为部分类中的属性设置默认值?

如何为 C# 中的枚举类型应用 InterLocked.Exchange?