“Transactions” 类型或命名空间在“System”命名空间中不存在。

11

这是一个使用Visual Studio 2013开发的ASP.Net网络应用程序,解决方案由几个项目组成。我在一个库项目中编写了代码,并使用了using System.Transactions,已经运行良好了数月。

今天我在网络应用程序项目中的代码中添加了相同的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 程序集或反之亦然。通常当我遇到这种情况时,你所采取的步骤应该已经解决了问题。 - Colin
好问题。我检查了解决方案中的所有项目,都针对“任何 CPU”进行了目标设置。而且引用都是指向 x86 DLL。 - Sandy Gettings
1
出于好奇,如果您明确更改 Web 应用程序项目的构建输出为 x86,会发生什么?在 Visual Studio 中,引用是否会出现错误?在构建时,输出窗口中是否有任何有用的错误消息? - Colin
1
有时候,当涉及到引用库时,VS可能会出现一些相当严重的问题。我自己遇到过一个问题,需要花费很多时间来解决。尝试一些愚蠢的小事情,比如完全删除引用,然后再添加回来。这就像踢一个口香糖机以使其投放糖果一样,你只需要正确地踢它 :-) - Rogue
@Colin - 我在输出窗口(打开诊断级别)中没有发现任何与其他引用不同的内容。另外,我正在编辑原帖以提供更多非常奇怪的信息。 - Sandy Gettings
@RogueBukkitDev - 是的,我尝试了那个和其他的“踢”操作,但仍然没有成功。 - Sandy Gettings
2个回答

1
请参考Mark Hall的回答

针对此问题,Microsoft Connect发布了一篇文章。有一条评论建议您可以浏览它。 给出的路径是:

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

通过浏览到此路径来添加引用。

如果这不起作用,请转到“引用” -> “System.Transactions”并确保该引用的属性中的“复制本地”设置为True。


我尝试过了,问题仍然存在。 - Sandy Gettings
你能试试这个吗?转到“引用”->“System.Transactions”,确保此引用的属性中“复制本地”设置为True。 - Hussein Khalil
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Sandy Gettings

1
通常情况下,System.Transactions不是您的引用的一部分,请尝试通过以下方式将其添加到您的引用中: 如果您使用Web应用程序,请右键单击您的引用;如果您使用Web站点,请在项目中右键单击。 在.NET引用中查找System.Transactions。 您应该在您的引用中找到System.Transactions。

谢谢,但那是我尝试的第一件事(请参见原帖)。对我有效的是将对“true”的引用设置为“Copy Local”。请参阅Hussein Khalil在他的答案中的评论。 - Sandy Gettings

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接