c# - 网站的 Nuget 自动还原

标签 c# asp.net visual-studio-2012 web-site-project nuget-package-restore

我正在尝试将我所有的 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 应用程序,因为它们根本不支持网站?

最佳答案

我也遇到了上述问题中描述的相同问题。我想知道您是否知道如何在没有项目文件的情况下在网站上进行 nuget 恢复。我在网站上确实有一个 package.config。

我尝试了很多不同的方法,下面的命令让我更接近解决方案,但还不完全是。

nuget 恢复 packages.config -PackagesDirectory ..\packages

上述命令确实按预期将包恢复到 ..\packages 文件夹中,但我不知道如何将正确的程序集放入网站的 bin 文件夹中。

关于c# - 网站的 Nuget 自动还原,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29808177/

相关文章:

asp.net - C# 中的正则表达式

C# 如何进行 Xunit 测试 - Task Void 方法

c# - 将命名空间设置为 XElement

asp.net - 发布 Web 应用程序时缩小 Asp.Net 中的 CSS 和 JS

windows - 启动 Windows 驱动程序开发

visual-studio-2012 - 在 Visual Studio 2012 中安装 Resharper 后如何重新启用 F12 以转到定义

c# - 代码在 visual studio 2012 中没有遇到断点

c# - 将非托管 dll 嵌入托管 C# dll

c# - 更改结构的大小是 C# 中的重大更改吗?

c# - Server.Transfer 到 HttpHandler