#c# #asp.net-core #project #.net-5
Вопрос:
У меня есть решение с двумя проектами .NET5, ProjectA и ProjectB.
ProjectA-это консольное приложение, которое зависит от Microsoft.Расширения.Хостинг, а ProjectB-это ASP.Net 5 приложение, которое ссылается на проект.
При публикации проекта ( dotnet publish
с помощью или через Visual Studio) все в порядке. И то и другое ProjectA.exe и связанные с ним подразделения включены. Но если я опубликую ProjectB, я получу только ProjectA.exe. Я не получаю все необходимые DLL-файлы для запуска ProjectA.exe.
Если я начну ProjectA.exe, я получаю следующую ошибку:
An assembly specified in the application dependencies manifest (ProjectA.deps.json) was not found:
package: 'Microsoft.Extensions.Configuration', version: '5.0.0'
path: 'lib/netstandard2.0/Microsoft.Extensions.Configuration.dll'
Я пытался включить Microsoft.Расширения.Хостинг непосредственно в ProjectB, но это не работает.
Я также попытался создать консольное приложение ProjectC, которое ссылается на ProjectA, и это работает, как и ожидалось.
Здесь есть пример репо: https://github.com/kalleguld/deps-test
Как мне создать профиль публикации, который позволит мне запускать оба ProjectA.exe и ProjectB.exe?
Комментарии:
1. Привет, я скачал ваш проект с предоставленной вами ссылки на github, и он может хорошо работать в vs. Когда я посещаю localhost:5001/api/string, я могу получить строку результата
Hello, StringProvider
. Затем я пытаюсь опубликовать ProjectA, все в порядке, затем в следующий раз опубликую ProjectB, тоже все в порядке. Я выбираю опубликовать в папке. Вот как выглядит моя папка публикации: i.stack.imgur.com/qKz28.png Я боюсь, что вам нужно перезапустить vs или перестроить код. Или попробуйте очистить кэш клиента vs. Я имею в виду, что ваш код, по крайней мере, в порядке.2. Спасибо, что посмотрели. Проблема возникает, когда я публикую ProjectB, а затем запускаю ProjectA.exe внутри опубликованной папки.
3. Спасибо за ваш ответ, означает ли то, что вы сказали
run ProjectA.exe inside the publish folder
, после публикации ProjectB, и вы дважды щелкаете projectB.exe, в это время проект автоматически запустится, что позволит вам получитьHello, StringProvider
при посещенииlocalhost:5001/api/string
? Или что-то еще? На моей стороне, после публикации ProjectB и двойного щелчка projectB.exe, Я могу получить этот строковый ответ при посещении этого URL.4.Нет, я хочу дважды щелкнуть ProjectA.exe из папки публикации ProjectB. Подобный этому:
cd ProjectB
dotnet publish
cd bin/Debug/net5.0/publish
.ProjectA.exe
5. Я могу воспроизвести вашу проблему, но я не могу найти причину и не знаю, как с ней справиться. Извините за это : (
Ответ №1:
Если вы хотите, чтобы и ProjectA, и ProjectB могли запускаться в одной папке, вы можете сначала запустить dotnet publish
команду из корневой папки ProjectB, чтобы опубликовать ProjectB.
Затем выполните dotnet publish
команду из ProjectA с -o {projectB/pubilish path}
параметром, чтобы опубликовать проект по пути публикации проекта B.
Более подробную информацию о dotnet publish
команде, пожалуйста, см. по ссылке ниже: