命名空间“系统”中不存在类型或命名空间名称“事务”(您是不是缺少程序集引用?) - C# ASP.NET

Posted

技术标签:

【中文标题】命名空间“系统”中不存在类型或命名空间名称“事务”(您是不是缺少程序集引用?) - C# ASP.NET【英文标题】:The type or namespace name 'Transactions' does not exist in the namespace 'System' (are you missing an assembly reference?) - C# ASP.NET命名空间“系统”中不存在类型或命名空间名称“事务”(您是否缺少程序集引用?) - C# ASP.NET 【发布时间】:2013-04-19 12:10:49 【问题描述】:

我们有一个使用 System.Transactions 命名空间的 C# ASP.NET Web 应用程序。

using System.Transactions;

这在本地开发时效果很好 - 我们只需要先通过转到网站来添加引用 --> 添加引用...

问题是在部署到 web 主机后(通过 FTP 复制),主机不知道这个引用。

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0234: The type or namespace name 'Transactions' does not exist in the namespace 'System' (are you missing an assembly reference?)

在 Visual Web Developer Express 2010 中工作,我们没有内置 References 文件夹。我看到了这个解决方案:https://***.com/a/13035466/2178080 建议(但不推荐)将 dll 复制到应用程序文件夹。

我对使用 ASP 进行部署有点陌生,不知道如何包含 System.Transactions 库以便主机可以找到参考。有人遇到过这个问题吗?

编辑:我们采用了将 dll 与应用程序一起复制到站点的路线。执行此操作的步骤:

    从本地系统复制 System.Transactions.dll。 粘贴到 Bin 文件夹中。 此程序集中引用的对象现在必须使用完全限定名称。

由于此解决方案被列为不推荐,我仍然对其他解决方案持开放态度。

Edit2:Grant 和 Chris 帮助我了解我是在使用网站而不是 Web 应用程序。 Grant 帮助解决了网站问题的具体问题。

【问题讨论】:

命名空间System.Transactions 是否存在?如果是,您是否将其添加到解决方案的“参考”面板中? 在 Visual Web Developer 中,它们不显示 References 文件夹。我可以访问站点属性页,它会显示其中列出的 System.Transactions 的引用。似乎确实需要手动步骤来复制 dll,但我不确定确切的位置或方式。 @user2178080 您应该能够设置引用的构建输出类型,以便使用“属性”选项卡在每次构建时自动从其源中复制它,而不是手动复制。不过,请注意此类部署的许可证警告。 因为它是一个 ASP.NET 网站(或者它是一个应用程序本身?)我看不出你能做到我刚才所说的。同样,依赖于许可证的一种方法是从 GAC 复制到解决方案根目录中的第三方文件夹,并从 那里 引用它,这应该使用自动更新设置添加它,这意味着它将在每次构建时从该目录获取二进制文件并将其输出到 bin 目录。从 GAC 添加的人不会这样做。 【参考方案1】:

您的问题是由于发布的站点没有附带 System.Transactions.dll,这表明“复制本地”设置为 False,因此 DLL 没有复制到 bin 文件夹。

转到References -> System.Transactions 并确保在此引用的属性上将“复制本地”设置为True

【讨论】:

正如我的评论所建议的(因为它不是严格的答案,这将变得显而易见(如果它是一个网站并且 不是 一个“应用程序”):这将是比手动复制更可取,但在 bin 文件夹中有引用的 ASP.NET 网站,不支持。 他在他的问题中使用了一个 ASP.NET Web 应用程序,我每天都在使用它,并且非常受支持。 原来我使用的是一个网站,它解释了大部分这些问题。我正在考虑将其转换为 Web 应用程序,但我想知道它是否值得。当看到这个答案时,它告诉我有些事情是不对的。 这个“参考”选项在哪里?这是在某处的菜单中吗?【参考方案2】:

检查 IIS 中的目标框架,确保将其设置为与编译代码相同的 .Net 版本。如果您使用的是具有应用程序池的 IIS 7+,请确保应用程序正在运行的池on 是同一版本的 .Net。

【讨论】:

它们都使用相同的目标框架。问题似乎来自于我们只是使用 FTP 副本进行上传,而引用并没有生成副本。

以上是关于命名空间“系统”中不存在类型或命名空间名称“事务”(您是不是缺少程序集引用?) - C# ASP.NET的主要内容,如果未能解决你的问题,请参考以下文章

命名空间“System.Configuration”中不存在类型或命名空间名称“ConfigurationManager”

命名空间“System.Configuration”中不存在类型或命名空间名称“ConfigurationMannger”,求帮助,谢谢

命名空间“System.Web”中不存在类型或命名空间名称“优化”

命名空间“System.Web.Mvc”中不存在类型或命名空间名称

命名空间“Microsoft”中不存在类型或命名空间名称“Reporting”

命名空间“Microsoft”中不存在类型或命名空间名称“AspNetCore”(您是不是缺少程序集引用?)