在Visual Studio中对具有不同目标平台的另一个项目的项目引用

时间:2019-01-31 23:39:37

标签: c# .net visual-studio azure azure-functions

我正在Visual Studio中开发Azure Function,它在本地运行良好。当我尝试发布到AZ时,它给了我失败的错误:请通过构建配置管理器将项目B目标平台更改为x64。

但是我已经这样做了,否则它不能运行,即使在本地也不能运行。但是,右键单击项目B的属性后,没有在对话框中将目标平台更改为x64。

问题是我在此处进行更改后,即使在本地也无法使用。具有目标平台AnyProject的项目A引用了对象B的另一个CPU给了我另一个错误:项目A:无法加载文件或程序集,项目B。

关于整个过程在本地和Azure上如何工作的任何想法。一开始我在错误的地方吗?

它们都在同一解决方案中,正在执行的项目调用Porject A,而项目A调用项目B

谢谢!

1 个答案:

答案 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(包含运行时)并手动配置。

  1. 访问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

  2. 右键单击您的项目->“属性”,在下面进行调试配置。

    Launch: Executable
    Executable: [x64CliPath]\func.exe
    Application Arguments: host start
    

    enter image description here

  3. 在发布之前,请不要忘记在Azure门户中的“应用程序”设置上将“平台”修改为64位。