我正在使用Visual Studio 2019和.NET Core 3.1。
我创建了一个新项目,并使用模板Class Library (.NET Core)。
我右键单击解决方案资源管理器中的项目,然后单击“编辑项目文件”。
然后添加以下目标:
<Target Name="Test" AfterTargets="Build">
<Message Text="This is a test" Importance="high" />
</Target>
当我发布时,它会多次命中此目标,在输出面板中看到" This is a test "几次。
我想在构建后执行此目标,而不是在构建期间执行。
在.NET Core Web API解决方案中,这适用,因为在发布事件之前,我正在对发布结果中包含的Angular项目执行ng build。
但在类库中,似乎永远不会执行发布MSBuild目标,即使我正在进行实际发布。
所以...
<Target Name="Test" AfterTargets="Publish">
<Message Text="This is a test" Importance="high" />
</Target>
这条消息从未显示在我的输出窗格中。
这个类库将要被发布到一个私有的NuGet服务器,我想在Publish操作完成后执行`nuget push`。一旦我在正确的时间运行msbuild目标,就可以很容易地执行命令来推送到NuGet服务器。
我是否忽略了什么?如何在.NET Core Library解决方案上的Publish操作完成后执行目标?
编辑: 这引出另一个问题。当我发布时,我得到这个输出:
1>------ Build started: Project: ClassLibrary1, Configuration: Release Any CPU ------
1>ClassLibrary1 -> C:\Users\11016409\Documents\source\Libraries\NET Core\ClassLibrary1\ClassLibrary1\bin\Release\netcoreapp3.1\ClassLibrary1.dll
1>This is a test
2>------ Publish started: Project: ClassLibrary1, Configuration: Release Any CPU ------
2>ClassLibrary1 -> C:\Users\11016409\Documents\source\Libraries\NET Core\ClassLibrary1\ClassLibrary1\bin\Release\netcoreapp3.1\ClassLibrary1.dll
2>This is a test
2>Successfully created package 'C:\Users\11016409\Documents\source\Libraries\NET Core\ClassLibrary1\ClassLibrary1\bin\Release\netcoreapp3.1\publish\ClassLibrary1.1.0.0.nupkg'.
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========
为什么会运行两次构建阶段?
dotnet publish
时,我的PrepareForBuild
和PreBuildEvent
目标从未被触发。最终,我只能通过执行dotnet build -c Release
进行构建,然后再执行dotnet publish -c Release -o dist --no-build
进行发布。 - Kevin Aung