7

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

  • Windows 上的 Visual Studio 10(带有 Microsoft 编译器)和
  • 在 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元素。)

4

1 回答 1

3

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

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

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

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

带点命名空间表示法:

namespace Baz.Bar
{
    [...]
}

voilà, theMissingManifestResourceException不再存在,即使是原来的DependentUpon条款。

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

于 2013-10-07T16:59:00.513 回答