Je suis en train de migrer tous mes projets C# à nouveau Nuget automatique Restauration, suivant ce tutoriel: Migrating MSBuild-Integrated solutions to use Automatic Package RestoreNuget automatique de restauration pour WebSite
Je l'ai fait avec succès à mes projets de bureau/bibliothèques, que je devais modifier les fichiers .csproj, la suppression de ces lignes de (je ne suis pas en utilisant TFS):
<RestorePackages>true</RestorePackages>
...
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
...
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
Cependant, ne semblent pas SitesWeb avoir une .csproj ou tout autre fichier contenant ces instructions. Quand j'installe un paquet, il place avec succès le .dll dans mon dossier de paquets, mais il le met également dans le dossier bin. Si je sélectionne le fichier .dll sous/bin au sein de l'Explorateur de solutions, il a les propriétés suivantes:
Auto-refresh path: C:\mypackages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll
File Name: Newtonsoft.Json.dll
Full Path: C:\MyWebSite\Bin\Newtonsoft.Json.dll
ce paramètre est réglé par défaut quand j'installe un paquet de NuGet. Je pense qu'il ne devrait pas regarder dans le dossier de bin, ou quand je construis le projet, il devrait apporter le dossier .dll au bin s'il n'existe pas. Le problème est que si je construis le projet sans le .dll dans bin, il me donne l'erreur suivante: "Le nom de type ou d'espace de noms 'Newtonsoft' est introuvable (manque-t-il une directive using ou une référence d'assembly?)". Pour les projets de bureau/bibliothèques, le fichier .dll est copié dans le dossier bin. J'ai lu dans une autre question Nuget ne supporte pas WebSite, mais les applications Web à la place: NuGet Package restore for website, mais j'ai aussi lu dans la page de Nuget qu'ils ont ajouté la compatibilité aux sites Web ASP.NET, alors voici ma question: Suis-je faire quelque chose de mal? Ou devrais-je migrer vers une application Web, car elle ne prend pas en charge les sites Web?
Le WAP est certainement la voie à suivre. Les sites Web sont beaucoup plus limités et n'ont pas beaucoup d'avantages si vous utilisez VS. Notez qu'avec la sortie de ASP.NET 5, il combinera le meilleur des deux mondes. J'ai bien utilisé NuGet avec des sites Web dans le passé. – mason