如何为子目录中的 C# 文件编写依赖子句



我们试图让我们的 C# 应用程序编译并同时运行两者

  • Visual Studio 10(带有Microsoft编译器),在Windows上,以及
  • MonoDevelop with gmcs, on Linux

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

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

在它们与 MonoDevelop/gmcs 一起使用之前,必须按如下方式进行更改(如果没有,则在运行时为资源。GetObject() 将抛出一个 MissingManifestResourceException):

<Compile Include="FooBar.cs" />
<EmbeddedResource Include="FooBar.resx">
    <DependentUpon>FooBar.cs</DependentUpon>
</EmbeddedResource>

如何将其重写为他们都会接受的形式?(当然,不包括删除DependentUpon元素。

同时,

我研究了几种处理这种情况的方法。

例如,显然可以添加具有值$(VisualStudioVersion) != ''Condition属性,以便使它们以是否正在使用Visual Studio为条件。

但是,一时兴起(阅读此答案后),我尝试了一些完全不同的东西:我替换了嵌套的命名空间

namespace Baz
{
    namespace Bar
    {
        [...]
    }
}

使用虚线命名空间表示法:

namespace Baz.Bar
{
    [...]
}

,即使有原来的DependentUpon条款,MissingManifestResourceException也不再存在。

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

相关内容

  • 没有找到相关文章

最新更新