【问题标题】:Add assembly reference to a deployed ASP.NET site将程序集引用添加到已部署的 ASP.NET 站点
【发布时间】:2014-12-12 17:58:46
【问题描述】:

我试图找出程序集引用实际上是如何在 IIS 上运行的 ASP.NET 网站的部署文件结构中体现的。

这是一个了解 Visual Studio 在幕后实际操作的练习

我选择作为测试对象的程序集是 System.IO.Compression.FileSystem,因为默认情况下在 ASP.NET 项目中似乎没有引用它(尝试使用它的组件总是导致“你是缺少程序集引用?”即使相应命名空间 System.IO.Compression 的 using 语句在文件中)

所以我有一些小示例代码尝试使用位于 IIS 服务器上的这个程序集,我想在不打开 Visual Studio 的情况下将引用原位添加到部署中

我认为我非常接近 IISManager->[[SITE_NAME]]->.NET Compilation->General->Assemblies 的答案,但我添加到此列表中的任何内容似乎都不起作用,我总是回来如果我正确理解了文档,“系统找不到指定的文件”,条目“*”应该加载所有内容,但似乎没有这样做

【问题讨论】:

    标签: asp.net visual-studio iis assembly-references


    【解决方案1】:

    我自己最终得到了答案,为了未来的读者,详细信息如下

    IISManager->[[SITE_NAME]]->.NET Compilation->General->Assemblies 确实是执行此操作的正确位置,它不起作用,因为我输错了 PublicKeyToken

    程序集列表也可以在您站点的主 web.config 文件的 configuration->system.web->compilation->assemblies 中找到

    您需要在 Windows/Microsoft.NET/assembly 的 GAC 中找到要引用的程序集并打开它的文件夹,里面将是另一个文件夹,名称为您需要放入的版本和密钥

    【讨论】:

      【解决方案2】:

      当您提到参考和using 语句时,您将两个不同的东西混为一谈。

      引用是程序集指向的程序集。如果您使用反编译器(如 Telerik JustDecompile),您可以看到您在 Visual Studio 中设置为引用的程序集。

      'using' 语句是一种代码快捷方式,允许您在不完全限定类的情况下引用类。如果您添加了(例如在 MVC 项目中)using System.Web.Mvc;,您可以编写:

      public ActionResult Index()
      {
          throw new NotImplementedException();
      }
      

      如果没有using 语句,您必须编写:

      public System.Web.Mvc.ActionResult Index()
      {
          throw new NotImplementedException();
      }
      

      以上两种方法都会产生相同的编译字节码; using 声明纯粹是为了让您作为开发人员的生活更轻松。

      【讨论】:

      • 我了解其中的区别,我只是想知道引用在 ASP.NET 站点部署后并远离 Visual Studio 后如何体现。 Visual Studio 在 ASP.NET 站点的编译中不能有任何直接的发言权,因为这是由 IIS 或等效程序处理的,那么告诉服务器在编译中包含另一个程序集是做什么的呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多