gpt4 book ai didi

azure-devops - dotnet 构建与在 Azure DevOps 上发布

转载 作者:行者123 更新时间:2023-12-04 11:06:40 24 4
gpt4 key购买 nike

我有一个 .NET Core 2.0 控制台应用程序。我可以成功构建或发布此应用程序并在本地运行它。我还可以在 Azure DevOps 中成功构建和发布此应用程序。但是,如果我在 Azure DevOps 中构建应用程序,则无法运行结果。

在 Azure DevOps 中,我尝试使用以下方法进行构建:
dotnet build -c Release -r win-x64 -o app
这会生成少量文件,其中仅包含与项目相关的文件。它不包括所有 System.*.dll 文件等,这些文件在我的大多数情况下似乎过多。当我在本地计算机上运行该命令时,该命令工作正常,并且可以成功单击 MyApp.exe 文件并运行我的控制台应用程序。但是,如果我在 Azure DevOps 上运行相同的命令,生成的 MyApp.exe 文件不会按预期运行。相反,它开始然后立即退出。控制台应用程序中没有打印任何内容。我看不到任何错误。该应用程序非常基础,包括所有内容的“try-catch”,并有一个 Console.ReadLine在末尾。所以,我认为它会保持开放。

当我运行时:
dotnet publish -c Release -r win-x64 -o app
我得到相同的文件,但包含所有 System.*.dll 文件等。这一次,我注意到我可以成功运行 MyApp.exe 并且它的行为符合预期。

为什么dotnet build ...在本地工作,但当我运行时似乎没有相同的行为 dotnet build ...在 Azure DevOps 中。看来我不得不使用 dotnet publish .我的问题是,生成的 .zip 文件从 ~500kb 到 30MB。这是很大的不同。

最佳答案

来自马口的回答:

The dotnet build command builds the project and its dependencies into a set of binaries. The binaries include the project's code in Intermediate Language (IL) files with a .dll extension and symbol files used for debugging with a .pdb extension. A dependencies JSON file (*.deps.json) is produced that lists the dependencies of the application. A *.runtimeconfig.json file is produced, which specifies the shared runtime and its version for the application.

If the project has third-party dependencies, such as libraries from NuGet, they're resolved from the NuGet cache and aren't available with the project's built output. With that in mind, the product of dotnet build isn't ready to be transferred to another machine to run.



dotnet build - 构建项目及其所有依赖项。

dotnet publish - 将应用程序及其依赖项打包到一个文件夹中,以便部署到托管系统。 (PS - 这也会在打包之前构建应用程序)

考虑到它直接来自微软,所以描述实际上非常好,所以我不会在这里重复这些词。

作为练习,创建一个包含多个项目的解决方案。对于其中一个项目,添加对另一个项目的引用。添加一些您的代码引用的静态文件和一些 NuGet 包。并在解决方案根级别和项目级别运行这些命令,并观察 bin 文件夹中的输出。

要运行的命令: dotnet build dotnet publish dotnet clean清理bin文件夹

此外,在根级别运行它并观察启用了自包含标志的输出:
dotnet publish -o ./output --runtime win10-x64 --self-contained
More info on self-contained builds

关于azure-devops - dotnet 构建与在 Azure DevOps 上发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52336878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com