Я использую Visual Studio 2017 и не могу заставить мои преобразования Slow Cheetah работать над сборкой Release . Тем не менее, с расширением Visual Studio SlowCheetat преобразование отображается правильно.
Я прошел:
- https://github.com/microsoft/slow-cheetah/blob/master/doc/transforming_files.md
- SlowCheetah не преобразует файл при сборке
- https://docs.microsoft.com/en-us/previous-versions/dd465326 (v = vs.100)? Redirectedfrom = MSDN # using-transform-and-locator-attribute-on-Отдельные элементы
- https://marketplace.visualstudio.com/items?itemName=vscps.SlowCheetah-XMLTransforms Некоторые примеры:
- https://github.com/microsoft/slow-cheetah/blob/master/samples/Wpf.Transform/contacts.Release.xml
- https://github.com/microsoft/slow-cheetah/blob/master/samples/Wpf.Transform/app.Release.config
Учитывая Я установил расширение Visual Studio SlowCheetah, которое позволяет мне добавлять и просматривать трансформацию файлов в моем проекте. Предварительный просмотр работает правильно , и я вижу необходимые мне преобразования / изменения.
Для преобразований во время сборки необходим пакет SlowCheetah NuGet.
Пакеты Nuget для решения
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="...Removed some for clarity...
<package id="Microsoft.VisualStudio.SlowCheetah" version="3.2.26" targetFramework="net461" developmentDependency="true" />
<package id="...
</packages>
App.Config (очищенный от конфиденциальных данных) в моем проекте выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="ApplicationSettings" type="System.Configuration.NameValueSectionHandler" />
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<quartz>
<add key="quartz.jobStore.misfireThreshold" value="10000" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.scheduler.instanceName" value="BibbyAggregatorTaskScheduler" />
<add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
</quartz>
<ApplicationSettings>
<add key="GangwayMovementApi" value="http://localhost:3000/api/gangwaymovement" />
<add key="DailyPobApi" value="http://localhost:3000/api/dailypob" />
<add key="GangwayMovementCronSchedule" value="0 0/1 * * * ?" />
<add key="DailyPobCronSchedule" value="0/15 * * * * ?" />
<add key="DbMaintenanceCronSchedule" value="10 0/2 * * * ?" />
<add key="GangwayMovementsStartDateTime" value="2020-03-17 16:00:45.587" />
<add key="httpPostTimeoutDurationMilliseconds" value="5000" />
</ApplicationSettings>
<connectionStrings>
<add name="EpicBibbyAggregatorService.Properties.Settings.EpicConnectionString"
connectionString="Data Source=127.0.0.1\aninstance;Initial Catalog=mydb;Persist Security Info=True;User ID=ABC;Password=DEF"
providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
</system.data>
</configuration>
Файл App.Release.config выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<ApplicationSettings>
<add key="GangwayMovementApi" value="http://localhost:3000/api/gangwaymovement" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="DailyPobApi" value="http://localhost:3000/api/dailypob" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="GangwayMovementCronSchedule" value="0 0/1 * * * ?" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="DailyPobCronSchedule" value="30 58 23 * * ?" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="DbMaintenanceCronSchedule" value="10 0 0/1 * * ?" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="GangwayMovementsStartDateTime" value="2020-04-01 00:00:00.000" xdt:Transform="Replace" xdt:Locator="Match(key)" />
<add key="httpPostTimeoutDurationMilliseconds" value="5000" xdt:Transform="Replace" xdt:Locator="Match(key)" />
</ApplicationSettings>
<connectionStrings xdt:Transform="Replace">
<add name="EpicBibbyAggregatorService.Properties.Settings.EpicConnectionString"
connectionString="Data Source=PRODDBINSTANCE;Initial Catalog=ProdDB;Persist Security Info=True;User ID=PRODBUSER;Password=PRODDBPASSWORD"
providerName="System.Data.SqlClient" xdt:Transform="Replace" xdt:Locator="Match(name)" />
</connectionStrings>
</configuration>
Если я редактирую свой файл .csproject, я вижу следующую ItemGroup - которая выглядит правильно.
<None Include="App.config">
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>true</IsTransformFile>
<SubType>Designer</SubType>
</None>
<None Include="App.Release.config">
<DependentUpon>App.config</DependentUpon>
<IsTransformFile>true</IsTransformFile>
<SubType>Designer</SubType>
</None>
Любые мысли приветствуются.
Кстати, если вы попытаетесь открыть: http://schemas.microsoft.com/XML-Document-Transform ссылка не доступна? Может ли это быть причиной?
Каким должно быть действие сборки для файла App.config? Не установлено.
Спасибо, Крейг