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

在引用文件系统中的程序集时,Visual Studio 2008和2010的行为是否不同?

  •  0
  • marc_s  · 技术社区  · 15 年前

    我在Visual Studio 2010中看到了一个奇怪的现象。

    我的项目设置是这样的(我继承了这个-不能很快更改它,不幸的是:—():

    • 使用Crystal Reports的WinForms应用程序 X (v10)作为其报告引擎;完整的CR X开发人员版本安装在我的开发人员对话框上

    • 使用Crystal Reports的几个Web窗体应用程序 (V11)作为他们的报告引擎-无法安装CR XI完整版,因为它与CR X DEV版冲突。

    为了在构建服务器上工作,我还创建了一个 Library winforms应用程序项目目录中的文件夹,其中包含我需要的cr x运行时文件,以及 图书馆 用CR XI运行时文件在Web应用程序的项目目录内文件夹。

    在vs 2008中,我能够从我的winforms项目(几个类库等)和我的web应用程序中的相应库文件夹中选择必要的程序集。一切都很好。

    当我更新到Visual Studio 2010时,我突然看到:

    • 在我的winforms应用程序中,所有对cr x运行时文件的引用都会自动更新以使用来自gac的cr x文件-这是 我想要什么!如果我删除这些引用并通过浏览到 图书馆 文件夹-当我选择它们时,VS2010似乎再次自动将它们转换为GAC引用…

    • 在我的Web应用程序中,情况变得更糟:当我从 图书馆 文件夹,同样,VS2010自动似乎检测到在GAC中有类似的文件(相同的名称,但不同的版本),并使用这些文件代替-现在我的Web应用不再工作…..

    与2010年相比,这里的H***是怎么回事?为什么它不能让我的选择单独存在,让我从 图书馆 文件夹而不是坚持要去GAC??2008年和2010年在这方面发生了什么变化?有人对此有什么见解吗??

    1 回复  |  直到 15 年前
        1
  •  1
  •   Brian    15 年前

    它可能对

    (1)转到“工具\选项\项目和解决方案\生成和运行”,将msbuild详细信息更改为“诊断”,然后生成并在输出窗口中查看msbuild引用解析逻辑如何处理这些程序集。也就是说,如果vs还没有对底层的.csproj文件做一些荒谬的事情

    (2)将VS2008项目文件中的XML与VS2010项目文件中的XML进行比较,以查看 <Reference> 结点

    一个疯狂的猜测:VS2010项目的目标是“.NET 4.0客户端”(而不是“.NET 4.0(完整框架)”,库需要完整的框架,而msbuild看到了这种依赖关系,并使用了回退逻辑。

    推荐文章