问题标签 [dotnet-publish]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
694 浏览

docker - dotnetcoresdk 容器中的“dotnet publish”命令生成没有详细信息的 EXE

我们正在尝试在容器中构建一个 .NET core 3.1 应用程序,使用具有不同参数的dotnet publishdotnet build命令。dotnet msbuild成功了,但问题是 EXE 输出从不显示任何文件详细信息(版权、文件版本等为空),而 DLL 确实包含指定的信息。我们尝试了几种不同的容器,以及在线研究并尝试了不同的命令参数,用于版本控制(有一些)。此外,直接在我的 Windows 10 机器上运行相同的 dotnet publish 命令,按预期工作,没有问题。

我还尝试分离dotnet builddotnet publish( --no-build) 命令并在其间复制代码签名的 EXE,以防存在信任问题,但没有任何效果。

Dockerfile 内容(也用于dotnet publish代替msbuild):

重现步骤:

  1. 创建 Dockerfile,类似上面
  2. 为 .NET Core 控制台应用程序运行 docker build 命令(替换 abc.csproj)
  3. 使用容器 ID 运行 docker run 命令
  4. 将发布内容复制到本地文件系统并查看 EXE 文件详细信息
0 投票
1 回答
84 浏览

.net-core - `dotnet publish` 命令创建的“MCD”配置是什么?

当我应用该dotnet publish命令时,我看到文件夹中创建了三个文件bin夹:DebugReleaseMCD.

究竟是什么MCD配置,这个配置是干什么用的?

0 投票
0 回答
399 浏览

linux - 将 .NET Core Worker 服务部署到 Linux systemd 服务单元/守护程序的步骤顺序

本文提供了将 .NET Core Worker 服务部署到 linux systemd 服务单元/守护程序的分步指南。感谢作者,我成功地达到了预期的结果。

然而,有一件事我发现在整个过程中违反直觉:在创建.tar文件之前进行这些预构建清理步骤 - 当最终将在构建覆盖目标中rules makefile定义publish(并且隐含的)命令时。build我假设dh_make适用于 a tar,这就是为什么我们在 a 之前创建它publish,但如果在执行之后放置清理步骤会不会更好publish

谁能澄清一下?

0 投票
0 回答
80 浏览

.net - 如何在不创建 web.config / .exe 文件的情况下运行“dotnet publish”?

我在我的应用程序上运行“dotnet publish”命令,它确实创建了一个 web.config 文件和一个 exe 文件。我不会在 IIS 服务器后面运行应用程序,所以我假设这些文件并不是真正需要的。

我无法弄清楚如何使命令不创建这些文件。

项目文件:

目标是创建“依赖于框架的跨平台二进制文件”。如果我理解正确的话。

看起来 .exe 文件对于从此处的文档进行跨平台发布总是“开启” 。也许 web.config 也是如此

0 投票
0 回答
68 浏览

c# - 使用 WinExe 发布 wpf 应用程序仍然打开控制台主机窗口

发布是通过 docker 完成的。

DockerFile

.csproj

预期行为:

由于OutputType设置为WinExe,它应该隐藏控制台主机(

实际行为:

应用程序与控制台窗口一起打开

0 投票
1 回答
186 浏览

.net - 传递 --no-build 时如何跳过 .csproj 中的目标?

如何在运行时停止运行 .csproj 文件中<Exec>标签中的命令?我可以停止使用整个部分吗?<Target>dotnet publish --no-build ...<Target>

样本:

0 投票
1 回答
70 浏览

asp.net-core - 通过“dotnet”命令构建或发布,参数/参数指定 windows Authentication=true 和匿名 Authentication=false

以下是有关我们开发环境的详细信息:

DevExpress 20.2.3(我们使用的是 DevExtreme)

Microsoft Visual Studio Enterprise 2019(版本 16.4.6)

ASP.NET 核心 3.1.0

AspNetCore.Mvc 3.1.0.0

Microsoft SQL Server 2008 R2 (RTM) –</p>

dotnet –版本 3.1.300

我们的部署服务器环境详细信息是:

Windows Server 2016 标准 64 位操作系统

dotnet –版本 3.1.300

IIS 版本 10

我们的目标是使用 dotnet 命令行构建和部署/打包:

适用于 .NET Core 的 Microsoft (R) Build Engine 版本 16.6.0+5ff7b0c9e 版权所有 (C) Microsoft Corporation。版权所有。

在 .\PublishedDirectory\appsettings.json 中有以下内容:

在 .\PublishedDirectory\appsettings.Development.json 中有以下内容:

最后在 .\PublishedDirectory\web.config 中,我们有以下内容:

应用程序需要发布和部署以下内容:

窗户认证:真

匿名身份验证:假

D:\AppCodeArena\StrangeAcmeApplication>dotnet build -c Release --runtime win10-x64 .\StrangeAcmeApplication.Uploaders.sln

D:\AppCodeArena\StrangeAcmeApplication>dotnet publish .\src\StrangeAcmeApplication.Uploaders\StrangeAcmeApplication.Uploaders.csproj --runtime win10-x64 --no-build -c Release --output .\PublishedDirectory /p:DebugType=None /p :DebugSymbols=false /p:EnvironmentName=Development --self-contained true

有人可以告诉我如何使用带有参数/参数的“dotnet”命令构建或发布应用程序,这些参数还指定以下内容?

窗户认证:真

匿名身份验证:假

0 投票
1 回答
150 浏览

c# - 无法公证 .net 核心应用程序以供 macOS 使用

我正在尝试对我的 .net 核心应用程序进行公证以在 MacOS 设备中运行,当我对其进行公证时,我得到了错误

可执行文件未启用强化运行时

如果我将--options=runtime标志添加到我的签名操作中,我的控制台应用程序将停止工作。我在 dotnet 文档中发现您必须将以下权利添加到您的应用程序主机。

  • com.apple.security.cs.allow-jit
  • com.apple.security.cs.allow-unsigned-executable-memory
  • com.apple.security.cs.allow-dyld-环境变量
  • com.apple.security.cs.disable-library-validation

但我不知道在哪里添加它们,我尝试在我的输出目录中添加一个 entitlements.plist 文件,其中包含以下内容:

但它仍然失败。这是我必须添加到发布过程中的东西吗?

0 投票
1 回答
26 浏览

.net - dotnet publish 中的 out 是什么意思?

在本文中,我找到了一种加速 docker build 命令的方法

https://www.softwaredeveloper.blog/optimize-building-net-core-docker-image

此命令缓存 nuget 依赖项

RUN dotnet publish -c Release -o out

我只是无法理解输出的含义,它应该是一条路径,但运行这样的命令失败,因为

COPY --from=publish out .

不起作用。如何在我的 docker 文件中使用它?

0 投票
1 回答
97 浏览

c# - Dotnet 发布到同一文件夹

当使用不同的独立.csproj 项目构建/发布到同一个文件夹时,预期的行为是什么dotnet publish

想象一下,Alpha.csproj可能需要 1.0.0 的 NuGet 包foo,并且该项目Bravo.csproj可能需要相同 NuGet 依赖项的 2.0.0 版本。我担心的是,dotnet publish对这些不同项目的两次单独调用,指向同一个目标文件夹,将导致foo依赖项被覆盖......从而破坏部署。

我知道 NuGet 经常将其二进制文件存储在子文件夹中,通常以版本号来区分,但它也很常见将依赖项直接放在主发布文件夹中。因此,从表面上看,存在意外冲突的空间。

到目前为止,我解决这个预期问题的方法是将两个项目放入同一个解决方案中,然后发布解决方案。我认为单个发布命令足够聪明,可以解决差异(将不同的依赖版本存储foo到不同的子文件夹中)。但是,如果这些项目处于不同的解决方案中怎么办?

我说“预期”的问题是因为我实际上并没有花时间尝试它。我的期限很紧,无法处理运行时出现的潜在隐蔽错误;我不想“艰难地”发现我的问题的答案。

了解这种动态对我来说尤其重要,因为我正在构建 .Net Core 3.1 插件,我想将其发布/部署到现有的框架文件夹。该应用程序旨在扫描新插件并加载它们。