2010-03-03 12 views
14

Gibt es eine Möglichkeit, Ressourcen in ein .NET-Projekt einzubetten? I.e. wenn ich INCLUDETHIS definiert habe, möchte ich eine bestimmte große Datei in die DLL einbetten, sonst möchte ich sie nicht einbetten. Ich weiß, dass ich dafür zwei Projekte machen kann, aber ich hoffe, dass ich alles in einem Projekt machen kann. Der Code, der die Datei verwendet, wird leicht mit einem #if INCLUDETHIS ... #endif konditioniert, aber ich möchte die Datei in der DLL nicht, da sie vertrauliche Informationen enthält und nur intern verwendet wird.Bedingte Einbettung einer Ressource in Visual Studio (C#)

Antwort

18

Dies hat den Trick gemacht. Sie können in Visual Studio mit der rechten Maustaste des Projekts und zu bearbeiten oder verwenden externen Editor wie Notepad ++ bearbeiten:

<Choose> 
    <When Condition=" '$(Configuration)'!='ReleaseExternal' And '$(Platform)'=='x86' "> 
     <ItemGroup> 
     <EmbeddedResource Include="file.dll"> 
      <Link>Resources\Other\file.dll</Link> 
     </EmbeddedResource> 
     </ItemGroup> 
    </When> 
    </Choose> 
+0

Sie csproj in Visual Studio bearbeiten können, aber Sie müssen zuerst das Projekt entladen. – Sarrus

+0

Ich konnte immer mit Notepad ++ bearbeiten, während es geladen wird – jjxtra

+0

Ich meine, es ist nicht notwendig, externen Texteditor zu verwenden – Sarrus

1

Sie können die Ressource abhängig von der Konfiguration bedingt in Ihre csproj-Datei einbetten, ich bin mir jedoch nicht sicher, ob Sie sie mithilfe von #if-Anweisungen in Ihrem Code steuern können.

Vielleicht fügen Sie stattdessen eine benutzerdefinierte Build-Konfiguration (zusätzlich zu "Debug" und "Release")? Und dann editiere einfach deine csproj-Datei, um sie einzubetten, wenn $ (Configuration == 'your custom buildconf').