Je travaille sur la mise à niveau de nos projets TeamCity de VS2012 à VS2015 et je rencontre un problème de compilation de notre application MVC.
Old MSBuild (v4.0.30319.34209) génère un fichier dans le répertoire obj appelé MyApplication.Web.Mvc.dll.licenses
qui est apparemment requis pour la construction, mais nous ne savons pas à quoi sert réellement le fichier.
Le nouveau MSBuild (v14.0.23107.0) ne crée pas ce fichier MyApplication.Web.Mvc.dll.licenses
; la construction échoue donc avec l'erreur suivante:
CSC error CS1566: Error reading resource 'MyApplication.Web.Mvc.dll.licenses'
-- 'Could not find file 'C:\BuildAgent\work\58ddf5f1234d8c8a\application\MyApplication\MyApplication.Web.Mvc\obj\Release\MyApplication.Web.Mvc.dll.licenses'.'
J'exécutais les versions manuellement via cmd sur la machine et le fichier dll.licenses
est créé à chaque exécution de la construction à l'aide de l'ancien msbuild, mais pas du nouveau.
Le fichier est créé sur les machines de développement exécutant VS2015, mais pas sur le serveur de génération Teamcity. Donc, il me semble que quelque chose d'autre est obsolète?
Après un peu plus de recherches sur Google, je suis tombé sur ce fil sur MSDN .
La solution suggérée ici consiste à installer le SDK Windows 10 . Nous l'avons fait sur notre serveur de génération TeamCity exécutant Windows Server 2012 R2 en utilisant les options d'installation par défaut. Après un redémarrage, notre génération fonctionnait à nouveau.
J'espère que cela t'aides :)
La réponse "Installer le Kit de développement logiciel (SDK) Windows 10" est correcte - en gros ... Un problème supplémentaire: il existe plusieurs versions de ce Kit de développement: une version existante: https://developer.Microsoft.com/en-us/windows/downloads/sdk-archive
Par l'écriture de ce commentaire:
Vérifiez votre sortie VS 2015 et quelle version de LC.exe est appelée. Ensuite, installez le SDK approprié sur le serveur de génération. N'oubliez pas d'installer Microsoft Build Tools 2015 également.
Remarque: Ma version cible .net 4.5, mais la procédure ci-dessus est nécessaire pour utiliser les outils de TeamCity with 2015.
Dans mon cas, TFS utilisait le compilateur de licences lc.exe
de l'ancien dossier SDK.
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\lc.exe
au lieu de
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64\LC.exe
Ce problème a été résolu en ajoutant l'argument msbuild suivant à la définition de construction:
/p:FrameworkOverride="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2"
Vous pouvez également vous débarrasser de ces problèmes et vous simplifier la vie en installant Visual Studio sur le serveur de génération et en ajoutant une étape de construction Visual Studio pour remplacer votre étape msbuild 2015
J'utilise Atlassian Bamboo en tant que serveur de construction, mais le problème est identique à celui décrit ici. J'ai essayé toutes les solutions de ce fil, mais rien ne fonctionnait. Finalement, j'ai utilisé la nouvelle version de MSBuild fournie avec Visual Studio 2017 et, tout à coup, ma DLL de licence a été créée correctement. Dans mon cas, le fichier MSBuild.exe peut être trouvé à l'adresse suivante:
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe
Pourrait être utile pour quelqu'un:
Après avoir installé le SDK Windows 10 et redémarré mon serveur, j'ai ajouté /p:VisualStudioVersion=14.0 /p:TargetFrameworkVersion=v4.5.2
à mon msbuild.exe. Cela a résolu le problème dans mon cas.
Nous avons eu le même problème lors de la construction avec VisualBuild. J'ai trouvé une solution sans installer le SDK Win10:
Dans les propriétés du projet, les paramètres de compilation, nous avons ajouté une "ligne de commande d'événement de pré-génération" comme ceci:
pushd "%VS120COMNTOOLS%..\..\VC"
call vcvarsall.bat
popd
pushd $(ProjectDir)\"My Project"
lc /target:$(TargetFileName) /complist:licenses.licx /outdir:"..\obj\$(ConfigurationName)"
popd
popd
Cette commande utilise les outils VS12 (les plus anciens), lance manuellement l'outil de compilation lc avant la génération du projet et compile le fichier licenses.licx dans le fichier de ressources * .licenses.
C'est une situation étroitement liée mais légèrement différente en ce que j'utilise Jenkins pour contrôler la construction ...
J'ai dû faire plusieurs changements.
/ p: Configuration = Version /p:VisualStudioVersion=14.0 /tv:14.0/verbosity: Normal
cd "Outils C:\Program Files (x86)\Microsoft SDK\Windows\v10.0A\bin\NETFX 4.6.2"
.\lc.exe /target:MyProject.dll/complist: "C:\Program Files (x86)\Jenkins\jobs\MonProject\workspace\MonProject\licences.licx"/i: "C:\Program Files\nsoftware\E-Payment Integrator V6 .NET Edition\lib\nsoftware.InPayWeb.dll "/ outdir:" C:\Fichiers de programme (x86)\Jenkins\jobs\MonProject\workspace\MonProject\obj\Release "