Ответ 1
Включение этого в "project.json" работает для меня:
...
"publishOptions": {
"include": [
"wwwroot",
...
"appsettings.json",
"appsettings.Development.json",
...
]
},
...
У меня есть три файла конфигурации, по одному для каждой среды:
Если я установлю ASPNETCORE_ENVIRONMENT на dev, я получаю исключение во время выполнения, которое жалуется на то, что не сможет найти appsettings.dev.json. Я попробовал добавить
"copyToOutput": [
"appsettings.dev.json"
]
в раздел buildOptions
в project.json, но он, похоже, не имеет никакого эффекта.
Есть ли другой способ заставить appsettings.dev.json копироваться в выходной каталог?
Включение этого в "project.json" работает для меня:
...
"publishOptions": {
"include": [
"wwwroot",
...
"appsettings.json",
"appsettings.Development.json",
...
]
},
...
Установлен ли базовый путь, где находится appsettings.dev.json?
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
В моем случае appsettings.json не копируется для юнит-тестов.
Если вы щелкнете правой кнопкой мыши по файлу и выберете Свойства, появится это диалоговое окно. Измените Build Action на Embedded resource, и файл будет скопирован в папку bin для модульного теста.
Предполагается, что вы используете Visual Studio:
Как правило, для служб в прошлом у меня были другие разработчики, настроенные "Build Events", которые гарантируют, что некоторые вещи в проекте будут построены. Как правило, это было бы в свойствах проекта ASP.NET для Visual Studio 2015 в качестве примера: > "Build Events" (левая панель) > Нажмите "Редактировать пост-сборку". Напишите в командной строке инструкции о том, как проект должен строить для вывода. EG:
mkdir "$(ProjectDir)bin\Setup"
создать каталог из bin под названием 'Setup'
Del "$(ProjectDir)bin\Setup\*.* /Q"
Удаляет все существующие элементы во вновь созданной ячейке
copy "$(TargetDir)*.dll" "$(ProjectDir)bin\Setup"
Копирование dll из местоположения сборки в новое место установки
Теперь, если вы выполняете процесс сборки, где ваш "Configuration Manager" выполняет разные выходные данные для каждой среды, и вы просто хотите, чтобы каждый из них всегда мог пройти по уровню, найдите эти бункеры имя 'dev' или 'stg', а затем скопируйте их обратно. Возможно, вы сможете создать или перечислить переменную, которую VS знает для среды, которая соответствует вашим данным JSON.
В appsettings.dev.json
решений щелкните правой кнопкой мыши файл, который требуется скопировать на выход (в вашем случае appsettings.dev.json
), и нажмите " Свойства". В панели "Свойства" установите для параметра " Копировать в каталог вывода" значение " Всегда копировать". Таким образом, каждый раз, когда вы собираете свой проект, ваш файл будет копироваться в выходной каталог (ваш проектный каталог или каталог выпуска в зависимости от вашего профиля сборки)