Условное встраивание ресурса в Visual Studio (C #) - PullRequest
16 голосов
/ 04 марта 2010

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

Ответы [ 2 ]

21 голосов
/ 04 марта 2010

Это добилось цели. Вы можете отредактировать свой csproj, щелкнув правой кнопкой мыши в Visual Studio на проекте и выбрав «edit».

  <Choose>
    <When Condition=" '$(Configuration)'!='ReleaseExternal' And '$(Platform)'=='x86' ">
      <ItemGroup>
        <EmbeddedResource Include="file.dll">
          <Link>Resources\Other\file.dll</Link>
        </EmbeddedResource>
      </ItemGroup>
    </When>
  </Choose>
1 голос
/ 04 марта 2010

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

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

...