2

一个 ASP.NET 应用程序是在 Visual Studio 之外开发的,它包含一个包含 ASP.NET 代码和 Visual Basic 代码的 aspx (pv.aspx) 文件。最初,我们使用这种方法编译了 aspx 文件。这创建了一个 aspx“占位符”文件,从而隐藏了文件中包含的所有 ASP 以及 vb 代码。但是,不理想的部分是 .dll 文件的命名(例如:“pv.aspx.cdcab7d2.compiled”)。

然后,我尝试按照此人的解释在VS2010 内创建一个网站项目,但在这种情况下,VB 代码已正确编译,但 ASP.NET 代码未编译且仍然可见(即不是编译时的占位符文件使用 aspnet_compiler.exe)。

虽然这两个选项都有效并且应用程序在 IIS 中运行顺利,但这并不是客户想要的。我被指示做以下事情:

  • 将 pv.aspx 编译为占位符文件,方法与 aspnet_compiler.exe 从命令行执行的方式相同
  • 将 dll 文件编译为具有特定名称,例如 pv.dll

我在 StackOverflow 和其他网站上找到了可以做一件事或另一件事的信息,但不能两者兼而有之。甚至可能吗?如果没有,我如何设计这个 Web 应用程序,使 asp.net 代码和 vb 代码都看不到,但 dll 文件仍然具有指定的名称?

4

2 回答 2

2

您想要的第一个选项(编译为占位符)是ASP.NET 编译器的功能,特别是-u未设置标志。来自编译器的文件名是内部生成的,并且在很大程度上是不可配置的。编译器公开的关于命名的唯一选项是-fixednames,它将把每个页面和控件编译成一个自己的 DLL 文件;默认行为是在编译器认为合适时对它们进行批处理。您仍然无法控制命名。(如果您使用ASP.NET 合并工具,它可以将多个 DLL 合并为一个,您将对 DLL 文件的名称进行一些控制。)

带有不需要的名称的 .compiled 文件不是 DLL 文件,并且是在加载每个页面时定位正确的程序集和入口点所必需的。从ASP.NET 预编译期间的文件处理

.compiled 文件

对于 ASP.NET Web 应用程序中的可执行文件,编译器程序集和具有 .compiled 文件扩展名的文件。程序集名称由编译器生成。.compiled 文件不包含可执行代码。相反,它只包含 ASP.NET 查找适当程序集所需的信息。

部署预编译的应用程序后,ASP.NET 使用 Bin 文件夹中的程序集来处理请求。预编译输出包括 .aspx 或 .asmx 文件作为页面的占位符。占位符文件不包含代码。它们的存在只是为了提供一种为特定页面请求调用 ASP.NET 的方法,以便可以设置文件权限以限制对页面的访问。

于 2013-08-24T17:42:36.520 回答
1

假设您使用的是 Visual Studio 2010,以发布模式发布 Web 应用程序将创建占位符文件。如果要设置一些条件编译选项,可以在 WebProject 属性的 build 选项卡下进行设置。至于为程序集设置固定名称,请参阅此页面:

http://msdn.microsoft.com/en-us/library/bb398860.aspx#PreCompilingToFixedNameAssemblies

寻找预编译到固定名称程序集,预编译到签名程序集

希望这可以帮助。

于 2013-08-28T20:38:51.307 回答