2013-09-26 35 views
7

Chúng tôi đang cố gắng để có được ứng dụng C# của chúng tôi để biên dịch và chạy với cảCách viết mệnh đề DependentUpon cho các tệp C# trong thư mục con?

  • Visual Studio 10 (với trình biên dịch Microsoft), trên Windows, và
  • MonoDevelop với gmcs, trên Linux

Tuy nhiên, bộ phận như thế này trong .csproj file (cho Visual Studio):

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

phải được thay đổi như sau trước khi họ sẽ làm việc với MonoDevelop/gmcs (nếu không, lúc chạy, resources.GetObject() sẽ ném một MissingManifestResourceException):

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

Làm thế nào để viết lại này thành một hình thức mà họ sẽ cả hai chấp nhận? (Dĩ nhiên, ngắn gọn là xóa DependentUpon phần tử.)

Trả lời

3

Trong khi đó, tôi đã nghiên cứu một số cách để giải quyết tình huống.

Ví dụ: it is apparently possible để thêm Condition thuộc tính với giá trị $(VisualStudioVersion) != '' để làm cho chúng có điều kiện về việc liệu Visual Studio có đang được sử dụng hay không.

Tuy nhiên, trên một ý thích (sau khi đọc this answer) Tôi cố gắng một cái gì đó hoàn toàn khác nhau: Tôi thay namespace lồng nhau tôi

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

với ký hiệu namespace chấm:

namespace Baz.Bar 
{ 
    [...] 
} 

thì đấy, các MissingManifestResourceException không còn tồn tại, ngay cả với mệnh đề DependentUpon gốc.

Sự cố được giải quyết, nhưng tôi không biết tại sao.

Các vấn đề liên quan