【问题标题】:The target "MSDeployPublish" does not exist in the project项目中不存在目标“MSDeployPublish”
【发布时间】:2014-07-01 07:00:07
【问题描述】:

我知道还有其他关于此问题的参考资料。但是我没有从一个版本的 VS 升级到另一个版本。我目前正在使用 VS 2013。该项目构建良好,过去甚至已经成功部署。这是一个全新的应用程序。所以它不是从另一个项目继承的东西。我可以从哪里开始寻找?我可以在这里发布什么可能对你们有帮助的东西,希望能帮助我?这是一个 web api 2 站点。我正在使用 VS2013 中的发布命令。

【问题讨论】:

标签: asp.net-web-api visual-studio-2013 web-deployment


【解决方案1】:

将以下几行添加到我的 .csproj 文件中似乎可以为我解决同样的错误:

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

作为尝试解决问题的一部分,我还安装了 MSBuild.Microsoft.VisualStudio.Web.targets Nuget 包。但我仍然不确定是否有必要解决问题。

【讨论】:

  • 我不需要安装 MSBuild.Microsoft.VisualStudio.Web.targets,因为它已经在目标机器上,但是是的,我确实需要更改 csproj 以包括:VSToolsPath 和
  • PropertyGroup 后面的 3 个导入行也是必需的,否则您也会得到标题中描述的错误。 i.imgur.com/7H6JP20.png
  • 对我来说,安装 MSBuild.Microsoft.VisualStudio.Web.targets 包似乎解决了我的问题。我还安装了 Microsoft.Web.WebJobs.Publish,但不确定这是否会影响修复。
  • 重新安装 Microsoft.Web.WebJobs.Publish 有助于解决此问题。
  • 我不需要将这些行添加到我的 .csproj 中。进口线已经在这里了。安装 MSBuild.Microsoft.VisualStudio.Web.targets Nuget 包解决了这个问题。
【解决方案2】:

如果您使用 Visual Studio 2013/update 4 从使用“发布为 Azure WebJob”的 WebJob 项目中收到此 MSB4057 错误 - 您可能需要更新 NuGet 包Microsoft.Web.WebJobs.Publish

检查 MyWebJob\packages.config,如果版本是 1.0,则需要 1.02 或更高版本。 从包管理器控制台运行

 Install-Package Microsoft.Web.WebJobs.Publish -Version 1.0.2

【讨论】:

  • 这并不能解决我的问题。我正在向 Azure 网站发布计划网络作业(控制台应用程序)并收到错误。
  • 使用控制台应用创建另一个解决方案,部署到 azure - 然后区分两个 .csproj 文件。
  • 谢谢。最终,csproj 确实被我创建的另一个工作所修改。看来 csproj 修改可能失败(但安装了软件包)最初留下了问题。
  • 是的,安装该软件包时 install.ps1 会引发错误(可能是如果您没有以管理员权限运行 VS2015) - 请参阅此处以获取可能的修复:stackoverflow.com/a/32330491/119761
  • 运行 VS 2015 社区更新 1 Microsoft ASP.NET 和 Web 工具 14.1.20203.0 扩展,我不需要在管理员模式下运行或修改 csproj 文件来解决此问题。前面提到的 NuGet 包,Microsoft.Web.WebJobs.Publish 就是我所需要的。谢谢!
【解决方案3】:

使用 VS 2013 更新 4。 Webjob 项目的模板似乎存在问题,因此即使您安装了 Microsoft.Web.WebJobs.Publish 包,对 webjobs.targets 的引用也是错误的。

确保项目底部的There Import语句在路径方面是正确的,我测试了两次,发现它格式错误。

<Import Project="..\..\packages\Microsoft.Web.WebJobs.Publish.1.0.2\tools\webjobs.targets" Condition="Exists('..\..\packages\Microsoft.Web.WebJobs.Publish.1.0.2\tools\webjobs.targets')" /> 

另外,最好避免使用以下内容,因为它会将您绑定到特定的 VS 版本。

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

【讨论】:

  • 所以我在 vs2013 更新 5。我的路径等都是正确的我的版本是 1.0.2 但我仍然遇到这个问题。有什么想法吗?
  • 这应该是解决方案!添加导入行(尽管版本为 1.0.11)对我有用。谢谢!
【解决方案4】:

仅供参考,VS2019 上的相同问题,相同的解决方案:

  • 安装 nuget Microsoft.Web.WebJobs.Publish 安装 nuget
  • MSBuild.Microsoft.VisualStudio.Web.targets

【讨论】:

  • Dido,截至 2019 年 11 月,只需安装 Microsoft.Web.WebJobs.Publish(当前为 2.0),但我不必执行第二步。出于某种原因,我多年来一直毫无问题地发布这个网络作业,但突然它需要这个以前从未安装过的包。
【解决方案5】:

对于部署 WebJob 的用户,此错误也可能是由于缺少 webjob-publish-settings.json 文件(它应该位于 WebJob 项目的 Properties 文件夹中)。它的结构应该是例如:

{
  "$schema": "http://schemastore.org/schemas/json/webjob-publish-settings.json",
  "webJobName": "MyWebJob",
  "startTime": "2017-01-27T03:00:00+00:00",
  "endTime": null,
  "jobRecurrenceFrequency": "Hour",
  "interval": 1,
  "runMode": "Scheduled",
  "is_singleton": true
}

(这是针对每小时计划的作业)。

【讨论】:

    【解决方案6】:

    刚刚重新安装了 VS 2017 (15.5.6),我遇到了三个 WCF 项目之一。我为所有三个选择了 csprojs,发现它们之间没有区别,从工作中剪切和粘贴各种导入、路径等并没有任何区别。

    添加 nuget 包 MSBuild.Microsoft.VisualStudio.Web.targets(v14.0.0.3 是最新的,即 VS2015)已​​经解决了这个问题......暂时。我不敢相信这已经永远消失了。

    【讨论】:

    • 对我来说也一样。谢谢!
    【解决方案7】:

    刚刚在 VS 2015 Update 3 中遇到了这个确切的错误。安装了最新的 Microsoft.Web.WebJobs.Publish,我尝试卸载并重新安装以取得良好的效果。仍然没有工作,但安装时出现了我第一次没有看到的错误:

    无法加载 install.ps1,因为此系统上禁用了运行脚本。

    这是大多数曾经运行过 PowerShell 脚本的人有时会遇到的问题,并且很容易修复(解决方案是 here),但错误消息本身很容易错过。

    【讨论】:

      【解决方案8】:

      只需在您要发布的项目上运行以下命令(并确保您的 VisualStudio 以“管理员”身份运行)

      install-package Microsoft.Web.WebJobs.Publish
      

      【讨论】:

        【解决方案9】:

        为了解决 Visual Studio Enterprise 2015 Update 3 的问题,我必须安装以下软件包并编辑 Web 作业的项目文件,如下所示。

        步骤 01:安装包(以管理员身份运行 VS 以执行脚本)

        1. install-package **MSBuild.Microsoft.VisualStudio.Web.targets**
        
        2. install-package **Microsoft.Web.WebJobs.Publish -Version 1.0.2**
        

        步骤 02:编辑 WebJob 项目文件(从 VS 中卸载项目并编辑/保存 .csproj 然后重新加载)

         <PropertyGroup>
            <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
            <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
        </PropertyGroup>
        

        【讨论】:

          【解决方案10】:

          我在 nuget 包的 project.json 项目中遇到此错误。

          当我删除 project.json 并使用 packages.config 时,一切正常。

          请注意,在尝试此操作之前,我确实为 Windows PowerShell 设置了 ExecutionPolicy,(see solution of @Jon Crowell),这可能也是必要的。

          如果有人找到使用 project.json 解决此问题的方法,请告诉我!

          【讨论】:

            【解决方案11】:

            我在 Visual Studio 2017 中加载的项目中遇到了同样的问题。它以前在另一台机器上工作,但当我迁移到新机器时就不行了。

            在尝试了此处答案中的所有建议后(这个问题在 StackOverflow 上重复了好几次),我终于遇到了其他地方提到安装 Azure SDK for VS2015 的人。

            这对于 VS2017 来说是不需要的,但它为我解决了这个问题。我以前在旧机器上使用 2015,但现在切换到 2017。显然,SDK 位仍然很重要。

            【讨论】:

              【解决方案12】:

              为了补充@Uri Golani 的答案,切换到新的PackageReference 方式而不是使用使用packages 文件夹的传统nuget,这意味着我看起来可以删除packages 文件夹。显然,csproj 中对packages 文件夹(我已删除该文件夹)的引用是问题所在。我不确定如何获得对其他内容的正确引用(无论 PackageReferences 所指的缓存是什么),所以现在,只需重新添加一个带有 Microsoft.Bcl.Build.1.0.21Microsoft.Web.WebJobs.Publish.1.1.0 nuget 文件夹的包文件夹似乎解决了这个问题。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2015-11-24
                • 2011-06-08
                • 2016-04-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多