我正在尝试将所有C#项目迁移到新的Nuget自动还原,遵循本教程:迁移MSBuild集成解决方案以使用自动包还原
我已成功完成了我的桌面/库项目,我必须编辑.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>
Run Code Online (Sandbox Code Playgroud)
但是,WebSites似乎没有任何.csproj或包含这些说明的任何其他文件.当我安装一个软件包时,它成功地将.dll放在我的packages文件夹中,但它也放在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
Run Code Online (Sandbox Code Playgroud)
当我第一次从nuget安装软件包时,这是默认设置.我认为它不应该查看bin文件夹,或者当我构建项目时,它应该将.dll带到bin文件夹(如果它不存在).问题是如果我在bin中没有.dll的情况下构建项目,它会给我以下错误:"找不到类型或命名空间名称'Newtonsoft'(您是否缺少using指令或程序集引用?)".对于桌面/库项目,.dll将复制到bin文件夹.
我在另一个问题中读到Nuget不支持WebSite,而是Web应用程序:网站的NuGet包还原,但我也在Nuget的页面中读到他们已经添加了对ASP.NET网站的兼容性,所以这是我的问题:我是做错了什么?或者我应该迁移到Web应用程序,因为它们根本不支持Web站点?
c# asp.net vs-web-site-project visual-studio-2012 nuget-package-restore