【发布时间】: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://stackoverflow.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 添加的人不会这样做。
标签: c# asp.net dll visual-web-developer-2010