Условно встраивание ресурса в Visual Studio (С#)

Есть ли способ условно вставить ресурсы в проект .NET? То есть если я определил INCLUDETHIS, тогда я хочу, чтобы в DLL был встроен определенный большой файл, иначе я не хочу, чтобы он был встроен. Я знаю, что могу сделать два проекта, но я надеюсь сделать это в одном проекте. Код, который использует файл, легко обусловлен #if INCLUDETHIS... #endif, но я даже не хочу, чтобы файл в dll оставался иначе, поскольку он содержит конфиденциальную информацию и используется только внутри.

Ответы

Ответ 1

Это сделало трюк, хотя мне пришлось вручную отредактировать мой csproj с помощью Notepad ++:

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

Ответ 2

Вы можете условно вставить ресурс в свой файл csproj в зависимости от конфигурации, однако я не уверен, что вы можете контролировать его с помощью операторов #if в вашем коде.

Может быть, вместо этого добавить пользовательскую конфигурацию сборки (в дополнение к "Debug" и "Release" )? А затем просто отредактируйте свой файл csproj вручную, чтобы вставить его, если $(Конфигурация == 'ваш пользовательский buildconf').