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

时间:2013-09-26 21:53:56

标签: visual-studio monodevelop csproj

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

  • Visual Studio 10(使用Microsoft编译器),在Windows上,以及
  • 使用gmcs进行MonoDevelop,在Linux上

但是,.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 个答案:

答案 0 :(得分:3)

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

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

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

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

带有虚线命名空间表示法:

namespace Baz.Bar
{
    [...]
}

voilà,即使使用原始MissingManifestResourceException条款,DependentUpon也不再存在。

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