【问题标题】:Project reference to another project with different target platform in Visual Studio在 Visual Studio 中对具有不同目标平台的另一个项目的项目引用
【发布时间】:2019-01-31 23:39:36
【问题描述】:

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

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

问题是在我在那里进行更改后,它甚至在本地都不起作用。具有目标平台 AnyCPU 的项目 A 引用 peoject B 给我另一个错误:项目 A:无法加载文件或程序集,项目 B。

关于整个事情应该如何在本地和 Azure 上运行的任何想法。我是不是一开始就在错误的地方?

他们都在同一个解决方案中,执行项目调用项目A,项目A调用项目B

谢谢!

【问题讨论】:

  • 您是否尝试过将两个项目都设置为使用 AnyCPU ?
  • 将 A 和 B 项目的目标平台都更改为 x64。因为那是AZ的目标。
  • @JeremyThompson 是的,我试过了。但它给了我错误请将项目 B 的目标平台更改为 x64。我想由于其他原因,项目 B 必须在 x64 上。我不确定,我可以在一个解决方案中拥有具有不同目标平台的项目吗?(在我的情况下,一个也引用另一个)谢谢
  • @Strom 由于执行项目调用项目 A,如果我也将 A 更改为 x64,它会给出错误:无法加载文件或程序集项目 A。谢谢
  • 让我问你,应用程序是在 x86 和 x64 上运行的本地服务器还是 Azure 服务器?不,那应该回答你的问题。

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


【解决方案1】:

我发现属性页面中的Platform target(也就是右键单击项目,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 位(1.x 用于 v1 .NET Framework 功能,2.x 用于 v2 .NET Core 功能)。例如,对于 OS Windows 上的 v2 函数,我们可以选择Azure.Functions.Cli.min.win-x64.2.4.317

  2. 在你的项目上右击->属性,在下面做调试配置。

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

  3. 发布前,别忘了在 Azure 门户中的应用程序设置中将平台修改为 64 位。

【讨论】:

  • 是的,但是由于其他原因,项目B必须保持x64,否则会出错。想知道我是否可以在一个解决方案中拥有两个具有不同目标平台的项目,尤其是一个引用另一个。谢谢
  • @tuoba 抱歉来晚了,恐怕无法引用不同目标平台的项目,是否可以将所有项目都设置为x64?
  • 感谢您的帮助。这里的问题是,如果我将所有项目都设置为 x64,那么我什至无法在本地运行它。错误:无法加载文件或程序集。需要找到棘手的方法。
  • @tuoba 您是否按照我更新的解决方案下载 x64 函数运行时?
  • 是的,程序“[5068] func.exe”已退出,代码为 -1073741510 (0xc000013a)。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 2012-09-03
相关资源
最近更新 更多