我正在Visual Studio中开发Azure Function,它在本地运行良好。当我尝试发布到AZ时,它给了我失败的错误:请通过构建配置管理器将项目B目标平台更改为x64。
但是我已经这样做了,否则它不能运行,即使在本地也不能运行。但是,右键单击项目B的属性后,没有在对话框中将目标平台更改为x64。
问题是我在此处进行更改后,即使在本地也无法使用。具有目标平台AnyProject的项目A引用了对象B的另一个CPU给了我另一个错误:项目A:无法加载文件或程序集,项目B。
关于整个过程在本地和Azure上如何工作的任何想法。一开始我在错误的地方吗?
它们都在同一解决方案中,正在执行的项目调用Porject A,而项目A调用项目B
谢谢!
答案 0 :(得分:0)
我发现“属性”页面中的Platform target
(也就是右键单击Project,Properties> Build
)确实控制了平台。将其保留为Any CPU
并将Configuration manager
更改为x64,将项目构建为x86,即Any CPU
的首选项。我还发现在一个全新的项目中,将Configuration manager
修改为x64,Platform target
被自动更改为x64,并且项目被内置到x64位中。
所以我想在本地运行良好是因为以前您的项目实际上针对x86。更改Platform target
后,由于项目平台的不一致,x64无法正常工作。
基于此,我建议就像@@ Jeremy所说的那样,确保将所有项目平台都设置为Any CPU
,我们可以直接删除x64平台设置以进行干净的配置。
如果您选择将所有项目平台设置为x64,请执行以下步骤。
VS默认情况下消耗x86运行时,要调试x64功能,我们必须下载x64 cli(包含运行时)并手动配置。
访问cli release note以下载最新的x64位(对于v1 .NET Framework函数,为1.x;对于v2 .NET Core函数,为2.x)。例如,对于OS Windows上的v2功能,我们可以选择Azure.Functions.Cli.min.win-x64.2.4.317
。
右键单击您的项目->“属性”,在下面进行调试配置。
Launch: Executable
Executable: [x64CliPath]\func.exe
Application Arguments: host start
在发布之前,请不要忘记在Azure门户中的“应用程序”设置上将“平台”修改为64位。