【发布时间】:2015-06-30 17:41:51
【问题描述】:
我正在尝试将我的所有 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 带到 bin 文件夹。问题是如果我在 bin 中构建没有 .dll 的项目,它会给我以下错误:“找不到类型或命名空间名称'Newtonsoft'(您是否缺少 using 指令或程序集引用?)”。对于桌面/库项目,将 .dll 复制到 bin 文件夹。
我读到另一个问题 Nuget 不支持网站,而是 Web 应用程序:NuGet Package restore for website,但我还在 Nuget 的页面中读到他们增加了对 ASP.NET 网站的兼容性,所以这是我的问题:我我做错了什么?或者我应该迁移到 Web 应用程序,因为它们根本不支持网站?
【问题讨论】:
-
WAP 绝对是要走的路。如果您使用 VS,网站会受到更多限制,并且实际上并没有太多优势。请注意,随着 ASP.NET 5 的发布,它将结合两全其美。不过,我过去曾在网站上使用过 NuGet。
标签: c# asp.net visual-studio-2012 web-site-project nuget-package-restore