【发布时间】:2019-06-11 12:08:42
【问题描述】:
我正在使用 VS2019 预览版。 我使用最新的 Blazor 扩展 (16.0.19227) 创建了一个“服务器托管”的 Blazor 应用程序。这是包含 3 个独立项目的变体...
- MyApp.Client
- MyApp.Server
- MyApp.Shared
我可以通过将 MyApp.Server 设为活动项目来调试它,一切正常,但我很难将它发布/部署到 Azure。我已经尝试了以下...
- 在 Solution-Explorer 中右键单击 MyApp.Server
- 选择“发布”
- 通过向导创建新的发布配置文件
- 将部署模式更改为“自包含”
- 点击发布
此时我在部署过程中遇到错误...
CSC(0,0):错误 CS0006:元数据文件 'D:\work\Applications\Web\MyApp.Client\bin\Release\netstandard2.0\win-x86\MyApp.Client.dll' 找不到
这似乎是因为 web-deploy 配置文件中的 “目标运行时” 设置为 win-x86。客户端应用程序实际上正在构建为
"D:\work\Applications\Web\MyApp.Client\bin\Release\netstandard2.0\MyApp.Client.dll"
(没有额外的 win-x86 子文件夹)因此部署过程似乎对构建过程使用的路径做出了错误的假设。发布对话框中无法指定空白/无关目标运行时。
是否有解决方法,或者我使用了错误的部署方法?
有一些official documentation,但不是很有帮助。
更新似乎部署正在使用客户端项目的输出路径,然后只是将 netstandard2.0{Target Runtime} 附加到它以便更改输出路径在客户端项目中不足以解决此问题。
更新 2 通过编辑 xml 删除发布配置文件中的 RuntimeIdentifier 标记只会导致部署时错误,指出空的 RuntimeIdentifier 与自包含的不兼容部署。不幸的是,自包含部署是必要的,因为 Azure 尚未直接托管 .net core 3。
【问题讨论】:
-
当前是否有任何需要发布为“自包含”的原因?我目前也有错误使用它。但是,以“框架相关”模式(目标运行时:可移植)发布似乎可以正常发布到 azure appservice。 (我收到有关不受支持的警告,但它仍然有效)。编辑:请记住,在撰写本文时,blazor 仍处于预览阶段
-
我假设我需要使用自包含,因为服务器项目的目标是“netcoreapp3.0”,而这在服务器上不存在。在发布对话框中,“netcoreapp3.0”是唯一受支持的目标框架,“可移植”不是目标运行时下拉列表中的选项。对于服务器托管的 Blazor 应用,您肯定会看到这些选项吗?
标签: visual-studio blazor blazor-server-side