Nuget自动还原为WebSite

thi*_*ssi 10 c# asp.net vs-web-site-project visual-studio-2012 nuget-package-restore

我正在尝试将所有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站点?

小智 8

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

我尝试了很多不同的东西,以下命令让我更接近分辨率,但并不完全.

nuget restore packages.config -PackagesDirectory ..\packages

上面的命令确实按预期将包恢复到..\packages文件夹中,但我无法弄清楚如何将正确的程序集放入网站的bin文件夹中.

  • 使用.refresh文件 (2认同)

Ale*_*sov 2

当您在 Visual Studio 中的解决方案上单击鼠标右键上下文菜单中的“启用 NuGet 包还原”时,您会收到一条信息消息,其中显示:

安装到网站项目中的包在构建过程中不会恢复。考虑将它们转换为必要的 Web 应用程序项目。

不过,我尝试过一种有效的解决方法。考虑当您有网站项目引用的类库 (DLL) 项目时的情况。如果两个项目引用相同的 NuGet 包,则构建整个解决方案,首先构建 DLL 项目,包将正确恢复。下一步,当涉及到网站项目时,所需的包已经就位,并且其 DLL 已/Website/Bin/根据*.refresh文件复制到文件夹中。结果 - 解决方案构建成功完成。