Как использовать различные файлы в проекте для различных конфигураций сборки - Visual Studio C# .NET

Проверьте этот образец репо. Это от инженеров Amazon. Использует Cloudformation.

https://github.com/aws-samples/amazon-quicksight-embedding-sample

9
задан Rory 10 February 2009 в 18:33
поделиться

4 ответа

В MSBuild можно указать условия группам объекта. Можно затем связать те условия с целевым устройством.

Пример:

<!-- Declare the condition property at the beggining of the build file -->
<PropertyGroup Condition="$(Platform) == 'IE7'">
  <UseNewLibrary>true</UseNewLibrary>
</PropertyGroup>

<PropertyGroup Condition="$(Platform) == 'IE6'">
  <UseNewLibrary>false</UseNewLibrary>
</PropertyGroup>


<!-- Then those the property to select the right file -->
<ItemGroup Condition="$(UseNewLibrary)==true">
  <Compile Include="Class1.cs"/>
  <Compile Include="Class2.cs"/>
  <Compile Include="Class3.cs"/>
  <Compile Include="Class4.cs"/>
</ItemGroup>

<ItemGroup Condition="$(UseNewLibrary)==false">
   <Compile Include="Class1Old.cs"/>
   <Compile Include="Class2Old.cs"/>
   <Compile Include="Class3Old.cs"/>
   <Compile Include="Class4Old.cs"/>
</ItemGroup>

<!-- And now references -->
<ItemGroup Condition="$(UseNewLibrary)==true">
  <Reference Include="MyAssembly, Version=1.1.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</ItemGroup>

<ItemGroup Condition="$(UseNewLibrary)==false">
  <Reference Include="MyAssembly, Version=1.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</ItemGroup>

Обратите внимание, что все файлы появятся в IDE, но во время компиляции все должно выровняться правильно.

Затем все, что необходимо сделать, создают платформы (IE6 и IE7) в управлении конфигурацией.

Можно также непосредственно использовать свойство платформы вместо того, чтобы создать промежуточное свойство.

12
ответ дан 4 December 2019 в 12:22
поделиться

Для добавления того же файла в двух или больше проектах, Вы можете

Щелкните правой кнопкой по проекту и выберите Add>> Existing Item
Выберите файл в filepicker
Нажмите мало треугольника на правую сторону кнопки Add в средстве выбора файла
Выберите Add As Link

Это добавит файл к проекту, не делая копию из него.

Я не знаю все подробности Вашей ситуации, но Вы - неловкие звуки решения. Две версии того же dll, вероятно, приведут к проблемам конфигурации на клиентских компьютерах eventurally. Я поощряю Вас рассматривать идею Kevin единственного dll со всеми возможностями и вызов соответствующего кода по мере необходимости.

3
ответ дан 4 December 2019 в 12:22
поделиться

Принятие Вас использует VS2005, или выше Вас может использовать свойство Condition в файле проекта.

Необходимо будет отредактировать csproj файл непосредственно

  1. Разгрузите проект
  2. Править

затем на файлах Вы хотите условно включать

<Compile Include="IE6.cs" Condition=" '$(Platform)' == 'IE6' " />
<Compile Include="IE7.cs" Condition=" '$(Platform)' == 'IE7' " />
<Compile Include="IE.cs"  />
2
ответ дан 4 December 2019 в 12:22
поделиться

Я не уверен, как сделать то, что Вы спрашиваете, но Вы не могли только включать обе версии своей обертки API в dll и определить который зайти во время выполнения? Например, что, если пользователь устанавливает версию IE6 Вашего приложения затем, обновляет до IE7? Они должны будут переустановить, правильно?

Это кажется мне как это, было бы много простого решения, но возможно я пропускаю что-то...

0
ответ дан 4 December 2019 в 12:22
поделиться