Сборка основного проекта .net по событию после сборки в Visual Studio 2017

У меня есть проект A, который зависит от проекта B, но нет ссылки с B на A. Я хочу собрать и скопировать сборки из bin folder проекта B в bin folder проекта A. как я могу сделать это с событием после сборки и dotnet msbuild.

Я нашел эту ссылку, но она работает для VS 2015 и ниже и MS-Build:

Построить другой проект с помощью события предварительной сборки без добавления ссылки


person Mohsen Esmailpour    schedule 26.04.2017    source источник
comment
как насчет этого вопроса? Не могли бы вы сообщить мне последнюю информацию по этому вопросу?   -  person Leo Liu-MSFT    schedule 27.04.2017
comment
@Leo-MSFT, ваше решение работает отлично, спасибо.   -  person Mohsen Esmailpour    schedule 29.04.2017


Ответы (2)


как я могу сделать это с событием после сборки и dotnet msbuild

Вы можете добавить задачу сборки и задачу копирования в событие после сборки в проекте A, чтобы выполнить свой запрос:

"$(MSBuildBinPath)\MSBuild.exe" "$(SolutionDir)ProjectB\ProjectB.csproj"
 xcopy.exe "$(SolutionDir)ProjectB\bin\Debug\netcoreapp1.1\ProjectB.dll" "$(SolutionDir)ProjectA\bin\Debug\netcoreapp1.1"

Если у вас есть несколько сборок в папке bin проекта B, вы также можете использовать Подстановочный знак для копирования сборок, например

xcopy.exe "$(SolutionDir)ProjectB\bin\Debug\netcoreapp1.1\*.dll

Надеюсь, это поможет вам.

person Leo Liu-MSFT    schedule 26.04.2017

Вот что сработало для меня. Источник: https://github.com/dotnet/sdk/issues/677

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="if not exist $(OutDir)..\..\..\..\build  mkdir $(OutDir)..\..\..\..\build" />
    <Exec Command="copy $(OutDir)$(TargetName).dll $(OutDir)..\..\..\..\build\$(TargetName).dll /Y" />
    <Exec Command="copy $(OutDir)$(TargetName).pdb $(OutDir)..\..\..\..\build\$(TargetName).pdb /Y" />
</Target>
person Will Tartak    schedule 20.06.2017
comment
Отличный ответ, но есть опечатка, если не существует $(OutDir)..\..\..\.\build отсутствует . непосредственно перед сборкой. Должен быть, если не существует $(OutDir)..\..\..\..\build - person Andrew Harris; 26.04.2021
comment
спасибо @AndrewHarris, я добавил точку. - person Will Tartak; 27.04.2021