问题标签 [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 投票
0 回答
228 浏览

visual-studio-2019 - dotnet publish 用错误的版本编译 Microsoft.AspNetCore.JsonPatch.dll

我有一个有趣的问题。当我在台式机上使用dotnet publis时,它会在 Linux 运行时编译我的项目而不会出错。当我在笔记本电脑上编译同一个项目时,Linux 运行出现一个错误,即在Microsoft.AspNetCore.JsonPatch上抱怨。当我试图找出问题所在时,我发现笔记本电脑上的dotnet publis使用 v2.2,如果我从 VS2019 构建我的解决方案,它使用正确的 3.0 版本(我的项目是 .net core 3)。

有趣的是,在我的笔记本电脑上,我生成了包含以下内容的web.config文件

有任何想法吗?

这是我如何从命令行构建

我的 API 的 csproj

如果需要任何代码示例或配置,请告诉我。

谢谢

0 投票
0 回答
514 浏览

c# - 当 Target 运行时可移植时,ASP.NET Core 3.1 应用程序无法在 IIS 上运行:未找到程序集

我在 VS2019 中基于 Template 编写了一个简单的 ASP.NET Core 3.1 Web 应用程序。在依赖框架的部署模式下将应用程序发布到以 netcoreapp3.1 为目标的文件系统,并以可移植运行时为目标。

该应用程序通过 IIS express 在我的开发盒上运行良好,运行 app.exe 和 dotnet app.dll。

在我们的暂存 IIS 上设置它并没有任何乐趣。运行 app.exe 按预期工作,但 dotnet app.dll 没有。相反,它告诉我

找不到应用程序依赖项清单 (SmartDirectoryNG.deps.json) 中指定的程序集:包:'Microsoft.Win32.Registry.AccessControl',版本:'4.7.0' 路径:'runtimes/win/lib/netstandard2.0 /Microsoft.Win32.Registry.AccessControl.dll'

当我将应用程序发布到目标 win-x64 时,一切正常。

我奇怪地想起了完整的 .NET 框架上的程序集重定向地狱,但我很好奇:为什么当我为 win-x64 发布时它会起作用?Microsoft.Win32.Registry.AccessControl.dll 始终与 app.exe 和 app.dll 位于同一目录中,并且 app.exe 确实找到了它。它似乎处于可移植模式,它不会在 app 目录中查找依赖项。

那么我在这里错过了什么?

0 投票
0 回答
24 浏览

c# - 构建并发布到 IIS 后,在发布命令中使用调试时,我总是看到生产构建

我在将开发版本的 Angular/Dotnet 应用程序安装到 IIS 时遇到问题。似乎即使将项目构建为开发/调试版本并在 IIS 中运行,该应用程序也会通过我创建的启动电子邮件通知我它始终处于生产模式!

在 IIS 中构建和安装的步骤:

  1. > ng build --debug -> 将文件构建到我的 dot net API 项目中的“wwwroot”文件夹
  2. > dotnet publish --configuration Debug -> 创建包含 bin 文件夹中所有文件的发布文件夹
  3. 将“发布”文件夹文件复制并粘贴到 IIS 文件夹
  4. 在 IIS 管理器中启动应用程序 -> 查看在浏览器中运行的站点

现在在 configure 方法下的 startup.cs 文件中,我在下面创建了这个电子邮件代码,以便在启动时向我发送电子邮件。如果我处于开发或生产模式,它会通知我。它一直在说生产。

我是否为开发人员错误地构建了项目?

0 投票
0 回答
2621 浏览

.net-core - 推送到开发服务器和产品服务器时,如何在 appsettings.json 和 appsettings.Development.json 之间进行选择?

如何让我的应用程序appsettings.json在生产服务器和appsettings.Development.json开发服务器上使用?

0 投票
0 回答
108 浏览

asp.net-core - 用于 ASP.NET Core 项目的 dotnet publish 不在 FileSystem 上发布

使用命令时

我的 ASP.NET Core 项目使用FileSystem发布方法构建并发布。

当我使用

命令(它应该只做发布部分)构建部分完成但没有发布操作完成。

这是 dotnet 的限制吗?
有解决方法吗?

我的系统:

VS2019 16.5.3

0 投票
0 回答
928 浏览

c# - 在 Linux .NET Core 上发布 Windows 服务

我在 Windows 上的 Visual Studio 2019 中开发 .NET Core 控制台应用程序(准备在装有 Windows 10 的服务器上作为 Windows 服务运行),我的持续开发工具在 CentOS 8 (GoCD) 上。

当我在 Windows 上发布该应用程序并作为服务运行时,一切都很好。当我尝试在 Linux 上发布并在 Windows 10 上运行该构建的应用程序时,我得到:

未处理的异常。System.PlatformNotSupportedException:ServiceController 允许操作和访问 Windows 服务,它不适用于其他操作系统。在 System.ServiceProcess.ServiceBase..ctor() 在 appIV.Scheduler.ServiceBaseLifetime..ctor(IApplicationLifetime applicationLifetime) 在 /opt/gocd-agent-1/go-agent-19.12.0/pipelines/app-SCHEDULER-PRODUCTION/ app-SCHEDULER-PRODUCTION/appIV/appIV.Scheduler/Service/ServiceBaseLifetime.cs:line 15

CentOS 8 上的环境:

我使用以下命令发布应用程序

我在想-r win-x64参数足以在具有 Windows 目标的 Linux 上进行 dotnet 发布,但显然我错了。只要应用程序作为常规控制台应用程序运行(我可以使用 --console 参数将该服务作为控制台应用程序运行),它就可以运行。但由于某种原因,我不明白在 Linux 上发布的应用程序不能在 Windows 上作为服务运行。

类管理作为服务运行,发生错误的地方:

}

0 投票
0 回答
117 浏览

visual-studio - 发布时将 appsettings.json 和所有其他文件分开到不同的目录

当我发布应用程序时,我需要将我的appsettings.json文件和一个.json用于应用程序配置的其他文件与所有其他文件分开。输出应该是所有文件都将位于 .bin 文件夹中,该文件夹现在是发布配置文件的文件夹目标,而 .json 文件应位于 CFG 文件夹中,该文件夹与 bin 文件夹处于同一级别

0 投票
2 回答
370 浏览

json.net - 不同的 Newtonsoft.Json.dll dotnet 发布与使用 Visual Studio 发布

我有一个带有目标框架.netcoreapp2.0的.NET Core Web 应用程序

如果我通过 Visual Studio(文件夹配置文件)发布我的应用程序,我会得到一个不同Newtonsoft.Json.dll的命令 dotnet publish --configuration Release --output D:/publish/Frontend /property:PublishWithAspNetCoreTargetManifest=false

VS发布版本

VS 发布版本

dotnet 发布版本

在此处输入图像描述

创建的文件AutomaticConfirmationWebfrontend.deps.json始终具有此依赖关系:

这会导致我的 CI/CD 流程出现问题,在该流程中我使用命令发布我的应用程序dotnet publish。如果我打开该网站,我会收到一条错误消息,提示无法找到程序集 Newtonsoft.JSON 10.0.0.0。如果我手动将版本为 10.0.0.0 的 DLL 复制到应用程序文件夹中,它可以工作!在本地调试我的应用程序也很好!

我没有安装 Newtonsoft NuGet 包。我想我正在使用 .NET Core 的内置包。

在我的Startup.cs我有以下代码行:

对于小写 JSON 对象,我需要它。我已经导入了这个命名空间:

有人知道我做错了什么或如何解决这个问题吗?

0 投票
0 回答
489 浏览

c# - 无法使用 dotnet publish 或 msbuild 部署 .net Core 3.1 App

我一整天都在尝试使用 Jenkins 部署 .net Core 3.1 应用程序。

直到今天我的解决方案是:

今天我有一个新应用程序出现错误:

所以我开始尝试从 切换dotnet publishmsbuild- 地狱开始了。在出现几十个错误、缺少环境变量和其他事情之后,我遇到了这个运行时错误。

我只想编译我的程序。我真的没想到会这么复杂。

我发现这个主题的唯一一件事是:不要使用 msbuild,使用 donet publish for .net Core

0 投票
1 回答
680 浏览

.net-core - MSBUILD : 错误 MSB1008: 只能指定一个项目。开关:释放

我正在尝试通过使用将我的代码发布到 linux 服务器上

在终端命令行中。这应该在 bin/release/publish 中创建一个文件夹,其中包含准备部署到服务器上的所有文件。

但是,我收到一条错误消息,上面写着

“MSBUILD:错误 MSB1008:只能指定一个项目。开关:发布”并且没有任何内容发布到 bin 文件夹。

我在 vscode 文件夹中创建了一个 settings.json 文件夹