我想我所有的C#项目迁移到新的NuGet自动恢复,下面这个教程:Migrating MSBuild-Integrated solutions to use Automatic Package Restore的NuGet自动恢复对网站的
我已经成功地完成它在我的桌面/库项目,我不得不编辑.csproj的文件,去除它这些行(我不使用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>
然而,网站似乎没有任何的.csproj或含有这些指令的任何其他文件。当我安装一个软件包时,它会成功将.dll放入我的软件包文件夹中,但它也会放入bin文件夹中。如果我选择解决方案资源管理器中下/ bin中的.dll文件,它具有以下特性:
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
这是默认设置,当我第一次从安装的NuGet包。我认为它不应该查看bin文件夹,或者当我构建项目时,它应该将.dll带到bin文件夹(如果它不存在)。问题是如果我在bin中创建没有.dll的项目,它会给我出现以下错误:“无法找到类型或名称空间名称Newtonsoft(是否缺少使用指令或程序集引用?”)。对于桌面/库项目,.dll被复制到bin文件夹。
我读过另一个问题Nuget不支持WebSite,而是Web应用代替:NuGet Package restore for website,但我也在Nuget的页面上看过他们已经添加了ASP.NET网站的兼容性,所以这里是我的问题:我是做错了什么?或者我应该迁移到Web应用程序,因为它们根本不支持Web站点?
WAP绝对是要走的路。网站是有限的,并没有真正有很多优点,如果你正在使用VS.请注意,随着ASP.NET 5的发布,它将结合两全其美。尽管我在过去使用过NuGet和网站。 – mason