我知道还有其他人提到这个问题。但我没有从一个版本的VS升级到另一个版本。我目前正在使用VS 2013.该项目构建良好,甚至在过去成功部署。这是一个全新的应用程序。所以它不是从另一个项目继承的东西。我在哪里可以开始寻找?我可以在这里发布什么可能对你们有所帮助,希望对我有所帮助?这是一个web api 2站点。我在VS2013中使用了发布命令。
答案 0 :(得分:33)
将以下行添加到我的.csproj文件似乎为我解决了同样的错误:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
作为尝试解决问题的一部分,我还安装了 MSBuild.Microsoft.VisualStudio.Web.targets Nuget Package。但我仍然不确定是否有必要解决这个问题。
答案 1 :(得分:30)
如果使用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
答案 2 :(得分:10)
使用VS 2013 Update 4。 Webjob项目的模板似乎存在问题,因此即使您已经安装了Microsoft.Web.WebJobs.Publish包,对webjobs.targets的引用也是错误的。
确保项目底部的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>
答案 3 :(得分:3)
刚刚重新安装了VS 2017(15.5.6),我遇到了三个WCF项目中的一个。我通过csprojs挑选了所有三个,并且发现它们之间没有区别,切割和粘贴各种进口,路径等来自工作的没有任何区别。
添加nuget包MSBuild.Microsoft.VisualStudio.Web.targets(v14.0.0.3是最新版本,即VS2015)已解决了问题......目前。我不敢相信这已经消失了。
答案 4 :(得分:3)
仅供参考,VS2019上的相同问题,相同的解决方案:
答案 5 :(得分:2)
刚刚在VS 2015 Update 3中遇到了这个确切的错误。安装了最新的Microsoft.Web.WebJobs.Publish
,我尝试了卸载并重新安装以获得良好的衡量标准。仍然无法正常工作但安装时出现错误,我第一次看不到:
无法加载install.ps1,因为在此系统上禁用了运行脚本。
大多数曾经运行过PowerShell脚本的人都曾经遇到过这样的问题并且易于修复(解决方案是here),但错误信息很容易错过。
答案 6 :(得分:2)
对于正在部署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
}
(这是针对每小时预定的工作)。
答案 7 :(得分:1)
在您要发布的项目上运行以下内容(并确保您的VisualStudio以&#34运行;管理员&#34;)
install-package Microsoft.Web.WebJobs.Publish
答案 8 :(得分:0)
为了解决 Visual Studio Enterprise 2015 Update 3 的问题,我必须安装以下软件包并编辑Web作业的项目文件,如下所示。
STEP 01 :安装软件包(以管理员身份运行VS以执行脚本)
1. install-package **MSBuild.Microsoft.VisualStudio.Web.targets**
2. install-package **Microsoft.Web.WebJobs.Publish -Version 1.0.2**
第2步:编辑WebJob项目文件(从VS卸载项目并编辑/保存.csproj然后重新加载)
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
答案 9 :(得分:0)
我在nuget包的 project.json 项目中遇到此错误。
当我删除project.json并使用packages.config时,一切正常。
请注意,在我尝试使用之前,我确实为Windows PowerShell设置了ExecutionPolicy,(see solution of @Jon Crowell),这可能也是必要的。
如果有人想通过project.json找到解决方法,请告诉我!
答案 10 :(得分:0)
我在 Visual Studio 2017 中加载的项目遇到了同样的问题。它以前在不同的机器上工作,但是当我迁移到新机器时却没有。
在尝试了答案中的所有建议后(问题在StackOverflow上多次重复),我终于碰到了其他人,他们提到安装 Azure SDK for VS2015 。
这对于VS2017来说并不是必需的,但它解决了我的问题。我以前在我的旧机器上使用了2015,但已经切换到2017年。显然,SDK位仍然很重要。
答案 11 :(得分:0)
要添加@Uri Golani的答案,切换到新PackageReference
方式而不是使用packages
文件夹的传统nuget,意味着我可以删除{{ 1}}文件夹。显然,Whelp是packages
到csproj
文件夹(我删除了哪个文件夹)中的引用问题。我不确定如何获得对其他东西的正确引用(packages
引用的缓存),所以现在,只需重新添加一个包文件夹,PackageReference
和{ {1}} nuget文件夹似乎解决了这个问题。