我正在尝试将所有的C#项目迁移到新的Nuget自动还原中,按照这个教程进行操作:Migrating MSBuild-Integrated solutions to use Automatic Package Restore
我已经成功地将桌面/库项目转换为自动还原,需要编辑.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文件,它应该将.dll文件带到bin文件夹中。问题是,如果我在bin中没有.dll文件构建项目,它会给我以下错误:“找不到类型或命名空间名称'Newtonsoft'(是否缺少using指令或程序集引用?)”。对于桌面/库项目,.dll文件将被复制到bin文件夹中。
我在另一个问题中看到NuGet不支持WebSite,而是支持Web应用程序:NuGet Package restore for website,但我也在Nuget的页面上读到他们已经添加了对ASP.NET Web Sites的兼容性,所以我的问题是:我做错了什么吗?还是应该迁移到Web应用程序,因为他们根本不支持Web站点?