Is there a way to conditionally embed resources into a .NET project? I.e. if I have defined INCLUDETHIS then I want a certain large file embedded into the dll, otherwise I do not want it embedded. I know I can make two projects to do this, but I'm hoping to do it all in one project. The code that uses the file is easily conditioned with a #if INCLUDETHIS ... #endif, but I don't even want the file in the dll otherwise as it contains sensitive information and is only used internally.
This did the trick. You can edit your csproj by right clicking in Visual Studio on the project and selecting "edit".
<Choose>
<When Condition=" '$(Configuration)'!='ReleaseExternal' And '$(Platform)'=='x86' ">
<ItemGroup>
<EmbeddedResource Include="file.dll">
<Link>Resources\Other\file.dll</Link>
</EmbeddedResource>
</ItemGroup>
</When>
</Choose>
You can conditionally embed the resource in your csproj-file depending on configuration, however I'm not sure if you're able to control it using #if statements in your code.
Maybe add a custom build-configuration instead (in addition to "Debug" and "Release")? And then just manually edit your csproj-file to embed it if $(Configuration == 'your custom buildconf').
来源:https://stackoverflow.com/questions/2375565/conditionally-embedding-a-resource-in-visual-studio-c