我正在尝试将我所有的 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/