Я использую расширение VS «SlowCheetah» для преобразования нашего app.config с различными значениями в зависимости от конфигурации проекта. Таким образом, конфигурация «Отладка» создает файл app.config со значениями, подходящими для пользователей Dev/Qa, а сборка «Выпуск» создает файл 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" />
And the msbuild logic is contained mostly in the 'SlowCheetah.Transforms.targets' file. My files are being transformed correctly.
Я хочу защититься от случайного запуска разработчиком сборки Release в Visual Studio и непреднамеренного запуска моего приложения с рабочим файлом конфигурации. Моя идея состоит в том, чтобы использовать условие msbuild, возможно, что-то вроде:
Condition=" '$(BuildingInsideVisualStudio)'=='true' "
Я безуспешно пытался использовать это условие в нескольких местах файла .csproj. Я подозреваю, что смогу заставить это работать, если изменю сам файл «SlowCheetah.Transforms.targets», но этот файл не следует изменять в соответствии с комментариями вверху.
В идеале я хотел бы, чтобы ВСЕ конфигурации для сборок внутри Visual Studio использовали мой файл конфигурации отладки, а сборки «Выпуск» вне Visual Studio (например, сборки на сервере непрерывной интеграции) использовали Prod app.config, но я бы согласился на возможность предотвратить случайный запуск сборки «Release» внутри Visual Studio. Любые предложения относительно того, можно ли/как этого добиться, приветствуются.