为什么带有引用程序集的 VS2012 项目无法自动定位 4.0

2024-01-02

在 Visual Studio 2012 C# 控制台应用程序中,我将“.NET Framework Target”从 4.5 降级到 4.0。安装了两个框架的 Win 7 Pro。

然后我引用一个程序集,该程序集通过警告抱怨以下内容:

The primary reference "System.Threading.Tasks.Dataflow, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" could not be resolved because it has an indirect dependency on the framework assembly "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.0". To resolve this problem, either remove the reference "System.Threading.Tasks.Dataflow, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" or retarget your application to a framework version which contains "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".

如果我尝试在此时进行编译,则会出错,因为引用的程序集的类型和命名空间不可用,就好像该程序集根本没有被引用一样。

“添加引用”对话框没有anySystem.Runtime 选择,但如果我手动浏览到 C:\Windows\Microsoft.NET\Framework\v4.0.30319\ 并引用在那里找到的 System.Runtime 程序集,警告消失并且我能够编译。

问题:

  1. 这种强制使用 System.Runtime 版本是否会成为未来(部署)的潜在问题?

  2. 如果 VS 项目属性设置为目标 Framework 4.0(这与目标 4.0 SystemRuntime/CLR 无关),为什么引用的 DLL 没有选择它,以及为什么手动添加对我的项目的引用可以修复该问题?


尽管图书馆System.Runtime是在里面C:\Windows\Microsoft.NET\Framework\v4.0.30319\目录,它不是 .NET 4.0 框架的一部分。 .NET 4.5 是 4.0 的就地更新,安装在具有相同版本号的同一文件夹中。

以下屏幕截图证明该库在 play .NET 4.0 安装中不存在:

您还可以通过浏览到来验证这一点C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework您可以在其中找到所有已安装框架版本的原始程序集的目录。你会发现System.Runtime.dll作为.NETCore\v4.5 and .NETPortable\v4.5子目录。

您可以将库添加到项目中的原因是运行时在4.0和4.5之间没有变化,因此Visual Studio不知道甚至不关心您手动添加的库是4.5安装的。在这种情况下,Visual Studio 中的目标只是一个筛选器,可避免您意外地将 4.5 程序集添加到面向 4.0 的项目中。

附加信息:

Rick Strahl 有一篇关于该主题的非常好的博客文章,其中有更详细的分析:

http://www.west-wind.com/weblog/posts/2012/Mar/13/NET-45-is-an-inplace-replacement-for-NET-40 http://www.west-wind.com/weblog/posts/2012/Mar/13/NET-45-is-an-inplace-replacement-for-NET-40

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么带有引用程序集的 VS2012 项目无法自动定位 4.0 的相关文章

  • 禁止 ServiceReference .cs 文件的 Xml 警告

    与 一起工作MVC4 and VS2012 我正在使用Service Reference 它会自动生成一个Reference cs文件 当我构建时 我收到许多警告作为错误 内容如下 缺少公共可见类型或成员的 XML 注释 我找到了类似的答案
  • 引用与指针的执行速度

    我最近阅读了一篇关于托管语言是否比本机语言 特别是 C 与 C 慢 或快 的讨论 一位参与讨论的人士表示 托管语言的 JIT 编译器将能够对引用进行优化 而这在使用指针的语言中是不可能实现的 我想知道的是 对于引用而不是指针可以进行 什么样
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 如何从 T、T& 或 T* 模板参数获取 T*

    我正在尝试找到一种方法来获取模板参数的基类 考虑下面的类 template
  • 运行需要 MySql.Data 的内置 .NET 应用程序

    我在运行我编写的内置 NET 应用程序时遇到问题 我的应用程序使用最新的 MySql 连接器 该连接器安装在我的系统上 当我尝试将其添加为引用时 该连接器显示为 NET 4 Framwork 组件 当我在环境中以调试模式运行应用程序时 一切
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • Blend For Visual Studio 11 出现错误

    已安装 Windows 8 Consumer Preview 安装 Visual Studio 2010 高级版 安装 Visual Studio 11 Ultimate 一切都已安装 没有任何错误 我使用 Visual Studio 11
  • 给出对象的指针作为参数

    假设我有 void func foo obj 我有 foo object 我该如何制作object进入争论func 只需取消引用它即可 func object
  • Visual Studio 2010 中的源代码控制?

    在对 SO Google 和 MSDN 论坛进行了一些搜索之后 我感到很沮丧 因为对于一个看似显而易见的问题 甚至可能是一个愚蠢的问题 信息太少 我需要在 Visual Studio 2010 Professional 中使用源代码管理 我
  • ReSharper 的快速修复命令的名称是什么

    我想将 Alt Enter 按键 用于灯泡建议 重新分配给另一个键 但我在 选项 gt 键盘 列表中找不到它 所有 ReSharper 命令似乎都有ReSharper 在名字里 但我不知道他们用于快速修复的名称是什么 Resharper 8
  • VS 2012 启动时自动更新 IIS 路径

    我的雇主最近将我们从 VS 2010 升级到 VS 2012 这很棒 但有一个小烦恼 我希望这里有人可以提供帮助 在 VS 2010 中 当我切换分支时 它会询问我是否要更新 IIS 路径 类似于 port blah 的路径指向这里 您想更
  • 如何在没有安装Visual Studio的另一台机器上使用Visual Studio生成的dll?

    我已经在 Visual Studio 2012 中生成了动态库 我想在另一台机器上使用该库 但我不想在远程机器上安装 Visual Studio 我有 mex 库和 dll 我想运行一个使用这两个库的脚本 当我运行脚本时 出现以下错误 缺少
  • 为什么转发引用与右值引用具有相同的语法?

    我刚刚对这些 相当 新的功能做了一些研究 我想知道为什么 C 委员会决定为它们引入相同的语法 看来开发人员不必要浪费一些时间来理解它是如何工作的 而一种解决方案可以让我们思考进一步的问题 就我而言 它是从问题开始的 可以简化为 includ
  • Visual Studio 2012 解决方案 TeamCity 中的 MSBuild

    我有一个 VS 2012 Web 项目 sln 我正在尝试在 TeamCity 中构建它 它使用安装在 TeamCity 上的 NET 4 5 TeamCity 服务器有仅安装了 VS 2010 构建运行时出现此错误 C BuildAgen
  • VS 2012 中缺少实体数据模型

    添加新项目时 我在 数据 选项卡下找不到实体数据模型 我查看了几个问题和答案以及有关此问题的信息 但没有一个解决方案有效 我已修复 卸载并重新安装 手动安装 EF Tools 包并尝试卸载所有 VS 相关程序 我还尝试在不同的 NET 框架
  • Visual Studio 希望使用错误的平台工具集进行构建

    我已将解决方案从 VS2010 升级到 VS2012 我用其他解决方案做到了这一点 而且效果很好 但现在当我尝试构建更新的解决方案时 编译器告诉我 Error 1596 error MSB8020 The builds tools for
  • Visual Studio:如何正确构建和指定 x64 和 x86 的配置和平台

    使用 Visual Studio 2012 Professional 和 Ultimate 以及所有最新更新 如何正确指定配置和平台以正确构建 x86 和 x64 当您第一次创建 Winforms 应用程序时 Visual Studio 会
  • C++ 返回值、引用、const 引用

    你能向我解释一下返回值 值引用和值常量引用之间的区别吗 Value Vector2D operator const Vector2D vector this gt x vector x this gt y vector y return t
  • 如何防止 Visual Studio 2012 自动关闭预览文件?

    Visual Studio 2012 似乎有一个新功能 可以区分已显式打开进行编辑的文件和已导航到的文件 这些 预览 文件默认位于环境顶部文件选项卡的右侧 并且具有默认选项卡颜色为紫色 虽然可以通过单击选项卡中的 保持打开 按钮来保持预览文
  • 通过引用传递时取消引用指针

    当通过引用传递给函数时取消引用指针时会发生什么 这是一个简单的例子 int returnSame int example return example int main int inum 3 int pinum inum std cout

随机推荐