代码之家  ›  专栏  ›  技术社区  ›  Frosty840

为什么改变解决方案平台会阻止部分类被看到?

  •  0
  • Frosty840  · 技术社区  · 14 年前

    我有一个我正在维护的程序,它是由我在这家公司替换的人写的。

    有一个旧版本的软件可以在我们所有的部署平台上正常工作,但是我尝试推出的版本在32位桌面安装上工作正常,但是当它试图在64位计算机上访问Crystal Reports和Informix安装的DLL并运行终端服务器会话(是的,我知道,我能再改变一下部署平台吗?)

    建议的调查途径之一是将解决方案平台从“任何CPU”更改为x86。

    在试图做到这一点时,VisualStudio似乎无法将XAML对象构建的部分类与声明它们没有“初始化”的方法的对象连接起来,然后失败,直到达到最大错误数为止。

    奇怪的是,更改解决方案平台,然后在Expression Blend中重新编译就可以了。将平台改回AnyCPU会使问题消失。所有项目都将编译和调试配置设置为活动。我不明白为什么简单地改变目标平台会阻止XAML生成部分类(或者 实际的 问题是…)

    为什么会发生这种情况,我该如何解决?

    编辑:好吧,看来这个项目有一些外部dll,而且 那些 是我称之为第一级编译失败的原因,因为一旦目标平台切换,它们似乎不包含任何类。

    在VS2008中,这会导致 完全没用 ,如上所述,但有一次我设法将项目导入到VS2010中,但只出现了这些错误(缺少类等), 没有 项目的其余部分正在崩溃。

    我现在正致力于从这些dll重建这些类,并希望能够在一天结束时在多个目标平台上编译一个项目。有希望地。。。

    把这个放在这里,以防其他人遇到类似的问题,因为解决这个问题的办法显然不是很明显。

    我仍然不确定为什么整个项目的其余部分在VS2008下崩溃,或者我做了什么导致

    2 回复  |  直到 14 年前
        1
  •  0
  •   Richard    14 年前

    建议的调查途径之一是将解决方案平台从“任何CPU”更改为x86。

    如果直接或间接引用本机dll,则它们必须与加载过程的执行“位”匹配。

    在32位系统上,应用程序将运行32位(当然)并加载这些第三方库的32位版本。

    但是在64位系统上 64位 Informix和Crystal报表的版本?

    只构建为x86,除非您从64位进程运行中受益(不太可能),否则它将节省两次测试。

    确保在更改平台设置时进行完全重建,因此首先删除任何现有的中间文件。

        2
  •  0
  •   Frosty840    14 年前

    复制上面的编辑,以便回答问题:

    好吧,看起来项目有一些外部dll,这就是我称之为第一级编译失败的原因,因为一旦目标平台切换,它们似乎不包含任何类。

    在VS2008中,这会导致完全没有任何工作的级联失败,如上所述,但在某一点上,我设法将项目导入VS2010,但只有这些错误(缺少类等),而项目的其余部分没有内爆。

    我现在正致力于从这些dll重建这些类,并希望能够在一天结束时在多个目标平台上编译一个项目。有希望地。。。

    把这个放在这里,以防其他人遇到类似的问题,因为解决这个问题的办法显然不是很明显。

    我仍然不确定为什么整个项目的其余部分在VS2008下崩溃,或者我做了什么导致