迁移到 VS 2019 后无法发布

Posted

技术标签:

【中文标题】迁移到 VS 2019 后无法发布【英文标题】:Can not publish since moving to VS 2019 【发布时间】:2019-05-26 06:21:20 【问题描述】:

我最近卸载了 VS 2017 并安装了 VS 2019。

当我通过 Web Deploy 发布我的网站时,如果失败并显示 2 条错误消息

由于未将对象引用设置为对象实例的错误,无法加载发布证书对话框。我的网站.Ui

Web 部署任务失败。 (使用指定进程(“Web 管理服务”)连接到远程计算机(“example.com”),但无法验证服务器的证书。如果您信任该服务器,请再次连接并允许不受信任的证书。了解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED.)

我完全不知道如何解决这个问题......

编辑

根据 cmets,有一个相同的问题,但该问题是关于 Azure 的。我没有连接到与 Azure 相关的任何内容。我并不是说这使我的问题与众不同,更多的是我不知道原因/解决方案是否相同。 Deploying to Azure from Visual Studio fails when connecting

【问题讨论】:

已知的 VS2019 问题,微软在很大程度上忽略了有关它的错误报告。确实有用的是posted here。 您是否按照错误消息的建议尝试了一种解决方法来允许不受信任的证书? @RobertBaron 所有这些链接都适用于 Azure。我没有使用任何 Azure 【参考方案1】:

如果您信任服务器,那么您可以通过直接编辑发布文件来忽略警告/错误

https://***.com/a/33662970/3252861

    在文本编辑器中打开 /Properties/PublishProfiles 中的发布配置文件 (.pubxml) 在 PropertyGroup 元素中,将 AllowUntrustedCertificate 设置为 True (AllowUntrustedCertificate> True /AllowUntrustedCertificate>),如果不存在则添加 将 UsePowerShell 设置为 False (False)。

第 3 点我没有做,所以我想我以前有过或不需要它

现在我们可以按照https://developercommunity.visualstudio.com/content/problem/484286/publish-fails-to-iis-using-msdeploy-webdeploy.html 上的建议实际添加以下 2 个条目

<UseMSDeployExe>True</UseMSDeployExe>
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>

应该指出的是,有些人报告说您只需要使用这两者之一:

<AllowUntrustedCertificate>True</AllowUntrustedCertificate>

所以,pubxml XML 文件的开头现在看起来像

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <UseMSDeployExe>True</UseMSDeployExe>
        <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
        <WebPublishMethod>MSDeploy</WebPublishMethod>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <ExcludeApp_Data>True</ExcludeApp_Data>
        <MSDeployServiceURL>domain</MSDeployServiceURL>
        <DeployIisAppPath>name</DeployIisAppPath>
        <RemoteSitePhysicalPath />
… 
… 

【讨论】:

两者都太多并给出错误(远程提供程序关闭连接)。仅添加 True 工作完美 Microsoft Visual Studio Community 2019 Version 16.4.5,问题依旧。 如果您仍然有问题,只需确保 .pubxml 包含在项目中即可。【参考方案2】:

在您的 /Properties/PublishProfiles/xxxxxx.Settings.pubxml 文件中,添加以下两行

<UseMSDeployExe>True</UseMSDeployExe>
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>

【讨论】:

【参考方案3】:

我知道这很旧,但我确实找到了一个对我有用的不同解决方案(在尝试创建/上传证书;重置发布配置文件等之后)

如果您的项目中安装了 nuget 包 MSBuild.Microsoft.VisualStudio.Web.targets,那么它已经过时了,这就是破坏它的原因。删除该软件包,您的发布将起作用。只要您的服务器是受信任的,就无需在您的 pubxml 中添加 AllowUntrusted flat。 (*即 Azure。)

【讨论】:

【参考方案4】:

我正在使用 VS 2019

将下一行添加到 PropertyGroup 节点:

<UseMSDeployExe>True</UseMSDeployExe>
<AllowUntrustedCertificate>true</AllowUntrustedCertificate>

【讨论】:

这对我有用!谢谢【参考方案5】:

我来自产品团队,我可以确认如果服务器证书不受信任,这是唯一需要设置的属性。

<AllowUntrustedCertificate>True</AllowUntrustedCertificate>

【讨论】:

【参考方案6】:

验证您的代码是否有任何错误 /C#/ Razor 语法,有时错误不会显示在错误窗口中。

【讨论】:

以上是关于迁移到 VS 2019 后无法发布的主要内容,如果未能解决你的问题,请参考以下文章

由于 dotnet ef dbcontext --json 失败,无法在 Visual Studio 2019 中列出实体框架迁移

迁移到 Androidx 后无法解析符号 R

VS2012 到 VS2015 迁移

无法解析 android.support.design。迁移到 AndroidX 后

将本地 mongo db 迁移到 atlas 后无法从 atlas 获取记录

我可以将这个旧的 csproj 迁移到 VS2017 csproj 吗?