Когда я публикую свое приложение .NET Core, оно выводит каталог runtimes
со следующими подкаталогами:
- publish/runtimes/
- debian.8-x64/
- fedora.23-x64/
- fedora.24-x64/
- opensuse.13.2-x64/
- opensuse.42.1-x64/
- osx/
- osx.10.10-x64/
- rhel.7-x64/
- ubuntu.14.04-x64/
- ubuntu.16.04-x64/
- ubuntu.16.10-x64/
- unix/
- win/
На моем CI / CD-сервере я публикую свои приложения с помощью этой команды:
dotnet publish -c Release -o ..\publish
Мои параметры публикации в файле проекта следующие:
- Целевая среда: netcoreapp2.1
- Режим развертывания: Зависит от платформы
- Target Runtime: win-x64
Я планирую публиковать это приложение только на Windows 2016 Server, поэтому папки OSX / Linux / Unix runtimes
не нужны.Хуже того, в некоторых случаях эти runtimes
папки содержат известные уязвимые dlls
, которые приводят к ложному положительному сканированию OSA.
Есть ли способ настроить проект на вывод только папки времени выполнения win
?
Обновление
Я попробовал предложения @ahsteele, и результат добавления RID в мои файлы csproj такой же, как если бы я не указал RID.
Когда я запускаю пример команды CI / CD
dotnet publish -c Release -r win10-x86 -o ..\publish
Я считаю, что это создает автономное развертывание.Поскольку мой каталог публикации переходит от 55 МБ к 120 МБ и из 237 файлов в 482 файла.
Обновление 2
Я попытался указать свой стартовый проект для шага публикации ион создает каталоги времени выполнения, чтобы быть более компактным.
Вот команда запуска, которую я выполняю:
dotnet publish .\startupProject.csproj -c Release -o ..\publish
И это вывод:
- publish/runtimes/
- unix/
- win/
Некоторые из проектов в моем решении определяют netstandard2.0, а некоторые - netcoreapp2.0.Документирует ли Microsoft где-нибудь, что если вы не укажете целевую платформу или определенный файл csproj, она предоставит вам все целевые платформы для всех возможных сред выполнения?