7

C# アプリケーションを両方でコンパイルして実行しようとしています。

  • 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(もちろん、要素を削除することはありません。)

4

1 に答える 1

3

その間、私は状況に対処するためのいくつかの方法を調査しました。

たとえば、属性に値を追加して、 Visual Studio が使用されているかどうかを条件とすることができるようですCondition$(VisualStudioVersion) != ''

ただし、気まぐれに(この回答を読んだ後)、まったく別のことを試しました:ネストされた名前空間を置き換えました

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

ドット付き名前空間表記:

namespace Baz.Bar
{
    [...]
}

そしてほら、元の節MissingManifestResourceExceptionがあっても、もはや存在しません。DependentUpon

問題は解決しましたが、理由がわかりません。

于 2013-10-07T16:59:00.513 に答える