2013-09-26 14 views
7

Stiamo cercando di ottenere la nostra applicazione C# per compilare ed eseguire con siaCome scrivere clausole DependentUpon per i file C# nelle sottodirectory?

  • Visual Studio 10 (con il compilatore Microsoft), su Windows, e
  • MonoDevelop con GMC, su Linux

Tuttavia, le sezioni di questo tipo nei file .csproj (per Visual Studio):

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

deve essere cambiato come segue prima che lavoreranno con MonoDevelop/GMCs (se non, in fase di esecuzione, resources.GetObject() lancerà una MissingManifestResourceException):

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

come riscrivere questo in una forma che lo faranno entrambi accettano? (A breve l'eliminazione dell'elemento DependentUpon, ovviamente.)

risposta

3

Nel frattempo ho ricercato un paio di modi per gestire la situazione.

Ad esempio, it is apparently possible per aggiungere Condition attributi con il valore $(VisualStudioVersion) != '' in modo da renderli condizionali sull'utilizzo di Visual Studio.

Tuttavia, per un capriccio (dopo aver letto this answer) ho provato qualcosa di completamente diverso: ho sostituito il mio namespace annidati

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

con punteggiata namespace notazione:

namespace Baz.Bar 
{ 
    [...] 
} 

e voilà, il MissingManifestResourceException non esiste più, anche con la clausola originale DependentUpon.

Problema risolto, ma non so perché.

Problemi correlati