.net core 如何将exe发布与console.net core 2.2应用程序的VS2019版本集成?

.net core 如何将exe发布与console.net core 2.2应用程序的VS2019版本集成?,.net-core,msbuild,visual-studio-2019,.net Core,Msbuild,Visual Studio 2019,我看到了几个类似的问题,但到目前为止,我还没有找到将发布步骤与构建过程集成的单一答案。不幸的是,dotnetpublish命令再次重建了项目,这意味着如果我将“dotnetpublish”命令放在项目的后期构建步骤中,我将得到无限次的构建重试循环 我想实现的是为我的.NET Core 2.2控制台应用程序构建一个exe,用于一些选定的环境,例如osx和windows-10,可能还有linux,每个环境都有自己的文件夹。明显的条件是它必须与构建集成,所以不需要额外的手册步骤(命令)。这必须在VS2

我看到了几个类似的问题,但到目前为止,我还没有找到将发布步骤与构建过程集成的单一答案。不幸的是,dotnetpublish命令再次重建了项目,这意味着如果我将“dotnetpublish”命令放在项目的后期构建步骤中,我将得到无限次的构建重试循环

我想实现的是为我的.NET Core 2.2控制台应用程序构建一个exe,用于一些选定的环境,例如osx和windows-10,可能还有linux,每个环境都有自己的文件夹。明显的条件是它必须与构建集成,所以不需要额外的手册步骤(命令)。这必须在VS2019 Pro内部以及CI(如AzureDevOps)中起作用

这一基本步骤是可以实现的,还是.Net内核是软件开发过程中的一个重大倒退? 我希望我只是错过了一些东西,我只是非常夸张。:)

谢谢,拉德克

如何将exe发布与控制台的VS2019版本集成 .net核心2.2应用程序

实际上,我想你不必担心这一点

dotnet publish
已包含生成过程发布过程将首先执行生成,然后运行发布。总之,构建是发布过程的一部分

因此,当您在Build下输入
dotnet publish
时,您将得到无限次的构建重试循环

解决方案

-----只需在
xxx.csproj
文件中删除后期生成事件,然后直接
dotnet publish
,它将首先运行生成过程

您可以在本地VS中进行测试,当您右键单击项目-->Publish,它将在输出windwow中显示步骤

此外,据我所知,Azure DevOps有一个名为
dotnet publish
的任务,其中包含构建

如果只想为发布步骤执行一些msbuild自定义目标,可以添加一个条件,如
condition=“$(DeployOnBuild)”==“true”
,它将为发布过程而不是正常的构建步骤执行(右键单击项目-->构建)


XXXXXXXXXXXXX
--------------更新1---------

第一个问题

实际上,发布的构建是一个纯过程,然后发布将把构建输出的内容复制到发布文件夹中。因此,execute程序只是来自buildoutput文件夹

请参阅发布日志:

因此,不应在生成过程中指定发布目标。这是多余的

第二个问题

要为Windows-10、linux或osx生成此程序,您可以尝试以下命令行来发布项目:(Release是标准的Release build配置)

对于Win-10:

dotnet发布-r win10-x64-c发布版--自包含的

Linux:

dotnet发布-r linux-x64-c发行版--自包含的

对于osx:

dotnet发布-r osx.10.12-x64-c发行版--自包含的

通过这种方式,项目首先根据指定的运行时生成,然后发布

有关.NET Core RID目录的更多信息,请参阅

更新2

我认为您应该更改此软件包UI中的配置:

然后单击保存

此外,发布此web项目时,请尝试删除bin和obj文件夹,然后发布它

Debug
bin\Debug\netcoreapp2.1\publish

发布
bin\Release\netcoreapp2.1\publish

或者您应该使用我描述的dotnet命令来发布项目。路径位于调试或发布文件夹下

如何将exe发布与控制台的VS2019版本集成 .net核心2.2应用程序

实际上,我想你不必担心这一点

dotnet publish
已包含生成过程发布过程将首先执行生成,然后运行发布。总之,构建是发布过程的一部分

因此,当您在Build下输入
dotnet publish
时,您将得到无限次的构建重试循环

解决方案

-----只需在
xxx.csproj
文件中删除后期生成事件,然后直接
dotnet publish
,它将首先运行生成过程

您可以在本地VS中进行测试,当您右键单击项目-->Publish,它将在输出windwow中显示步骤

此外,据我所知,Azure DevOps有一个名为
dotnet publish
的任务,其中包含构建

如果只想为发布步骤执行一些msbuild自定义目标,可以添加一个条件,如
condition=“$(DeployOnBuild)”==“true”
,它将为发布过程而不是正常的构建步骤执行(右键单击项目-->构建)


XXXXXXXXXXXXX
--------------更新1---------

第一个问题

实际上,发布的构建是一个纯过程,然后发布将把构建输出的内容复制到发布文件夹中。因此,execute程序只是来自buildoutput文件夹

请参阅发布日志:

因此,不应在生成过程中指定发布目标。这是多余的

第二个问题

要为Window-10、linux或osx生成此程序,请使用c
<Target Name="testone" Condition="'$(DeployOnBuild)'=='true'" AfterTargets="Build">

    xxxxxxxxxxxxxx  

</Target>