Я использую расширение VSS SlowCheetah для преобразования нашего app.config с различными значениями в зависимости от конфигурации проекта. Таким образом, конфигурация «Отладка» создает файл app.config со значениями, подходящими для пользователей Dev/Qa, а сборка «Release» создает app.config с производственными значениями.Состояние MSBuild, чтобы предотвратить преобразование XML app.config
.csproj содержит раздел, как это:
<ItemGroup>
<None Include="App.config">
<SubType>Designer</SubType>
<TransformOnBuild>true</TransformOnBuild>
</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>
</None>
<None Include="packages.config" />
<None Include="Properties\SlowCheetah\SlowCheetah.Transforms.targets" />
И логика MSBuild содержится главным образом в файле 'SlowCheetah.Transforms.targets. Мои файлы преобразуются правильно.
Я хочу защитить от разработчика, случайно запускающего сборку «Release» внутри Visual Studio и непреднамеренное запуск моего приложения с помощью файла конфигурации производства. Моя идея заключается в том, чтобы использовать условие MSBuild, возможно, что-то вроде:
Condition=" '$(BuildingInsideVisualStudio)'=='true' "
Я попытался использовать это условие в нескольких местах в файле .csproj без успеха. Я подозреваю, что могу заставить это работать, если я модифицирую сам файл SlowCheetah.Transforms.targets, но этот файл не должен изменяться в соответствии с комментариями вверху.
В идеале я хотел бы, чтобы ВСЕ конфигурации для сборки внутри Visual Studio использовали мой конфигурационный файл Debug, а для Visual Studio (например, строит на сервере непрерывной интеграции) сборку «выпускает», но я использую Prod app.config, но я «соглашайтесь на возможность предотвратить случайное выполнение сборки« Release »внутри Visual Studio. Любые предложения относительно того, если/как это может быть достигнуто, оценены.
хорошо делает свою работу. Благодарю. – JMc
Хорошей альтернативой с использованием того же условия является указание значений DEV в app.config и отдельное преобразование для конфигурации «Release». Затем поместите «Условие» в группу свойств «SlowCheetah». В результате преобразование происходит только при построении вне VS. При построении внутри VS вы всегда получаете файл DEV app.config. – JMc