VB.NET Azure部署没有/bin文件夹,但有一个nuget包。

3

我刚刚(通过GitHub)发布了一个 VB.NET 的 Azure 网站,本地机器上工作正常,但在 Azure 上不行:

编译器错误信息:BC30451:未声明 'Newtonsoft'。它可能由于其保护级别而无法访问。


请注意,此问题可能是由于缺少 Newtonsoft.Json 包所致。您可以尝试在 Azure 门户中将其添加为应用程序依赖项。如果仍然存在问题,请确保正确引用该包并将其更新到最新版本。
Dim category As Category = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Category)(json)

使用NuGet安装了Newtonsoft.Json包:Newtonsoft.Json.5.0.5。

目前,这是项目中唯一的第三方dll。

我使用Azure ftp访问/site/wwwroot/并注意到没有/bin目录。

现在,我的.gitignore文件排除[Bb]in和[Oo]bj文件夹,但这是我成功用于c#项目的相同.gitignore文件,并且一直认为Azure只会从/packages获取缺失的nuget dlls。

这是我第一次使用VB.NET > GitHub > Azure网站部署。我错过了什么?

编辑:我可以确认,如果通过Azure ftp上传/Bin/Newtonsoft.Json.dll,则站点将正常工作。或者至少在重新镜像之前是这样的...


你找到解决办法了吗?在私人服务器上遇到了同样的问题。 - om471987
1
我记不得问题是如何解决的了。也许我忘了为NuGet包还原提供明确的同意 - 参见http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages - Neil Thompson
我解决了这个问题。问题是,Packages文件夹中有一个更新版本的Newtonsoft,但csproj文件引用了旧版本。手动编辑了文件后,错误消失了 :) - om471987
1个回答

0

听起来好像你还没有启用“NuGet包还原”。

这样做会在解决方案的根目录下创建一个.nuget文件夹,并在Azure中的应用程序中创建一个packages.config文件,生成过程将从中获取所需的引用并加载。

右键单击解决方案,应该会有这个选项。


我不确定这是否仍然适用:http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html,但无论如何还是谢谢。 - Neil Thompson
哇,好的,看起来我需要多读一些资料。谢谢提供链接! - idodev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接