Je sais qu'il y a eu d'autres références à cette question. Mais je n'ai pas mis à niveau d'une version de VS à une autre. J'utilise actuellement VS 2013. Le projet se déroule bien et a même été déployé avec succès dans le passé. Ceci est une toute nouvelle application. Donc, ce n'était pas quelque chose hérité d'un autre projet. Où puis-je commencer à chercher? Que puis-je poster ici qui peut être utile pour vous aider les gars à m'aider? C'est un site web api 2. J'utilise la commande de publication dans VS2013.
L'ajout des lignes ci-dessous à mon fichier .csproj semble résoudre la même erreur pour moi:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Dans le cadre de la résolution du problème, j'ai également installé le package MSBuild.Microsoft.VisualStudio.Web.targets Nuget. Mais je ne suis toujours pas sûr que cela était nécessaire pour résoudre le problème.
Si vous obtenez cette erreur MSB4057 d'un projet WebJob utilisant "Publier en tant que Azure WebJob" avec Visual Studio 2013/update 4, vous devrez peut-être mettre à jour le package NuGet Microsoft.Web.WebJobs.Publish
Vérifiez MyWebJob\packages.config et si la version est 1.0, vous avez besoin de la version 1.02 ou ultérieure . À partir de la console du gestionnaire de packages, exécutez-la.
Install-Package Microsoft.Web.WebJobs.Publish -Version 1.0.2
Avec VS 2013 Update 4 . Il semble y avoir des problèmes avec le modèle d'un projet Webjob, de sorte que la référence à webjobs.targets est fausse, même si vous avez installé le package Microsoft.Web.WebJWeb.Publish.
Assurez-vous que la déclaration There Import au bas du projet est correcte en termes de chemin. J'ai testé deux fois et j'ai constaté qu'elle était mal formée.
<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')" />
Aussi, évitez mieux d’utiliser ce qui suit, car il vous lie à une version de VS spécifique.
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Venant juste de réinstaller VS 2017 (15.5.6), je me suis heurté à l'un de ces trois projets WCF. J'ai sélectionné les csprojs pour les trois et je n'ai trouvé aucune différence, couper et coller les différentes importations, chemins, etc. de ceux qui travaillaient ne faisait aucune différence.
L'ajout du package de nuget MSBuild.Microsoft.VisualStudio.Web.targets (la dernière version, 14.0.0.3, c'est-à-dire VS2015) a résolu le problème ... pour le moment. Je ne peux pas croire que cela soit parti pour de bon cependant.
Pour ceux qui déploient un WebJob, cette erreur peut également être due à un fichier webjob-publish-settings.json
manquant (il doit être situé dans le dossier Propriétés du projet WebJob). Sa structure devrait être par exemple:
{
"$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
}
(il s’agit d’un travail planifié toutes les heures).
Je viens de tomber sur cette erreur exacte avec VS 2015 Update 3. Le dernier Microsoft.Web.WebJobs.Publish
a été installé, et j'ai essayé de procéder à la désinstallation et à la réinstallation pour faire bonne mesure. Cela ne fonctionnait toujours pas, mais il y avait une erreur d'installation que je n'ai pas vue la première fois:
le fichier install.ps1 ne peut pas être chargé car l'exécution de scripts est désactivée sur ce système.
C’est quelque chose que la plupart des personnes ayant déjà exécuté un script PowerShell ont rencontré à un moment ou à un autre et qui sont faciles à résoudre (la solution est ici ), mais le message d’erreur lui-même est facile à manquer.
Il suffit d’exécuter ci-dessous le projet que vous souhaitez publier (et assurez-vous que votre VisualStudio fonctionne en tant qu’administrateur)
install-package Microsoft.Web.WebJobs.Publish
J'ai rencontré le même problème avec un projet chargé dans Visual Studio 2017 . Auparavant, il travaillait sur une machine différente, mais pas lorsque j'ai migré vers une nouvelle.
Après avoir essayé toutes les suggestions des réponses fournies ici (la question est un peu dupliquée à plusieurs reprises sur StackOverflow), j'ai finalement rencontré quelqu'un d'autre qui avait mentionné l'installation du Azure SDK pour VS2015 .
Ce n'est pas censé être nécessaire pour VS2017, mais cela a résolu le problème pour moi. J'avais déjà utilisé 2015 sur mon ancienne machine, mais je suis passé à 2017. Apparemment, les bits du SDK comptaient toujours.
Afin de résoudre le problème de Visual Studio Enterprise 2015 Update 3 , j'ai dû installer les packages suivants et modifier le fichier de projet du travail Web comme suit.
STEP 01 : Installer des packages (Exécuter VS en tant qu'administrateur pour l'exécution de script)
1. install-package **MSBuild.Microsoft.VisualStudio.Web.targets**
2. install-package **Microsoft.Web.WebJobs.Publish -Version 1.0.2**
ETAPE 02 : Editer le fichier de projet WebJob (déchargez le projet de VS et éditez/sauvegardez .csproj puis rechargez)
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Pour ajouter à la réponse de @Uri Golani, le passage à la nouvelle méthode PackageReference
au lieu d'utiliser le nuget traditionnel qui utilise le dossier packages
signifie que je pouvais supprimer le dossier packages
. Whelp, apparemment, ces références dans la csproj
au dossier packages
(le dossier que j'avais supprimé) étaient le problème. Je ne sais pas comment obtenir la bonne référence à quelque chose d'autre (quel que soit le cache auquel PackageReference
s se réfère), donc pour le moment, rajouter un dossier de packages, avec les dossiers Microsoft.Bcl.Build.1.0.21
et Microsoft.Web.WebJobs.Publish.1.1.0
semble résoudre ce problème.
J'ai eu cette erreur dans un projet avec un project.json pour les paquets de nuget.
Quand j'ai enlevé le project.json et utilisé le packages.config tout a bien fonctionné.
Remarquez que j’ai défini ExecutionPolicy pour Windows PowerShell avant de l’essayer ( voir la solution de @Jon Crowell ), cela pourrait également être nécessaire.
Si quelqu'un trouve un moyen de résoudre ce problème avec un project.json, faites-le moi savoir!