【问题标题】:The type or namespace name 'Transactions' does not exist in the namespace 'System' [duplicate]命名空间“系统”中不存在类型或命名空间名称“事务”[重复]
【发布时间】:2015-05-14 21:52:53
【问题描述】:

这是一个带有 Visual Studio 2013 的 ASP.Net Web 应用程序。该解决方案由多个项目组成。我在一个具有using System.Transactions 的库项目中有代码,它运行了几个月。

今天我在 Web 应用项目的代码中添加了相同的 using System.Transactions,但它失败并显示以下错误消息:

The type or namespace name 'Transactions' does not exist in the namespace 'System'

以下是我尝试过的一些事情:

  • 添加了对System.Transactions的引用。
  • 已验证两个项目中引用的 dll 文件是否相同。
  • 将框架从 4 更改为 4.5 并返回。
  • 已验证所有项目都使用相同的框架版本。
  • 清理并重建了解决方案。
  • 退出 Visual Studio,删除 AppData>Local>Temp 中的所有文件,重新构建。
  • 重启电脑。

因此,结果是 using System.Transactions 在一个项目中运行良好,但在另一个项目中运行良好,即使两个项目都在同一个解决方案中。

有什么建议吗?

编辑:这是一个奇怪的地方,可能没有任何额外的帮助,但这里是:

  • 当我构建项目时,没有错误。也就是说,using System.Transactions 编译得很好。
  • 如果我运行应用程序,它会爆炸并且错误出现在浏览器窗口中。 VS 代码窗口仍然没有显示任何错误。
  • 如果我编辑using System.Transactions 或添加var x = System... 之类的代码,错误会立即出现在using System.Transactions 中。

** 编辑:** 这个问题被标记为重复。不是——建议的副本通过浏览参考解决了这个问题。我已经尝试过了,但没有帮助。就我而言,我不得不使用“复制本地”选项。

【问题讨论】:

  • 两个项目是否针对同一个平台?这可能是一个长镜头,但也许 x64 项目正在尝试引用 x86 程序集,反之亦然。通常,当我遇到类似的事情时,您采取的步骤会解决问题。
  • 好问题。我检查了解决方案中的所有项目,所有项目都针对“任何 CPU”。并且引用都指向 x86 DLL。
  • 出于好奇,如果您将 Web 应用项目的构建输出显式更改为 x86,会发生什么?引用在 Visual Studio 的项目中是否出现损坏?构建时输出窗口中是否有任何有用的错误消息?
  • VS 在引用库时有时会出现一些非常严重的问题。我自己也遇到过一个花了很多时间来解决的问题。尝试一些愚蠢的小事情,例如完全删除引用并将其添加回来。这就像踢一个口香糖机让它分配,你只需要正确地踢它:-)
  • @Colin - 我在“输出”窗口(已打开诊断级别)中没有发现任何与其他参考资料不同的内容。另外,我正在编辑原始帖子以获取更多信息,这真的很奇怪。

标签: c# asp.net .net visual-studio-2013 transactions


【解决方案1】:

参考这个Answer By Mark Hall

为此有一个Microsoft Connect entry posted。有一条评论建议您可以浏览它。给出的路径是:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Transactions.dll

浏览至此路径即可添加参考

如果这不起作用,请转到 References -> System.Transactions 并确保在此引用的属性上将“Copy Local”设置为 True。

【讨论】:

  • 我试过了,还是一样的问题。
  • 你能试试这个吗...转到 References -> System.Transactions 并确保在此引用的属性上“Copy Local”设置为 True。
  • 成功了,耶!我通过关闭“复制本地”进行测试,再次失败;打开它,它就可以工作了。这看起来是一个很好的答案,谢谢!只是好奇的一件事:在此解决方案的另一个库项目中,“复制本地”已关闭并且一直是关闭的,并且它编译得很好。不知道为什么会有所不同,但我会保持安静并快乐。
【解决方案2】:

通常 System.Transactions 不是您的参考资料的一部分,请尝试通过以下方式将其添加到您的参考资料中:

如果您使用的是 Web 应用程序,请右键单击您的参考资料;如果您使用的是网站,请在您的项目中单击鼠标右键。 在 .NET 引用中找到 System.Transactions。 您应该在引用中找到 System.Transactions。

【讨论】:

  • 谢谢,但这是我尝试的第一件事(见原帖)。对我有用的是在对“真实”的引用上设置“复制本地”。请参阅 Hussein Khalil 在他的回答中的 cmets。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 2016-10-08
  • 2012-06-19
  • 1970-01-01
相关资源
最近更新 更多