ASP.NET应用程序是在Visual Studio之外开发的,包含一个aspx(pv.aspx)文件,该文件同时包含ASP.NET代码和Visual Basic代码。最初,我们使用this方法编译了aspx文件。这创建了一个aspx“占位符”文件,从而隐藏了所有ASP以及文件中包含的vb代码。但是,一个不可取的部分是.dll文件的命名(例如:“pv.aspx.cdcab7d2.compiled”)。
然后我尝试在this人解释之后在VS2010内创建一个网站项目,但在这种情况下,VB代码编译正确但ASP.NET代码未编译且仍然可见(即使用aspnet_compiler.exe编译时不是占位符文件。)
虽然两个选项都可以正常运行,并且应用程序在IIS中运行顺畅,但它并不是客户想要的。我被指示做以下事情:
我已经在StackOverflow和其他网站上找到了一个或另一个但不是两个都有的信息。它甚至可能吗?如果没有,我怎么能设计这个web应用程序,以便无法看到asp.net代码和vb代码,但dll文件仍然有一个指定的名称?
答案 0 :(得分:2)
您想要的第一个选项(编译为占位符)是ASP.NET compiler的函数,特别是未设置-u
标志。来自编译器的文件名在内部生成,并且在很大程度上是不可配置的。编译器关于命名的唯一选项是-fixednames
,它将编译每个页面并控制到它自己的DLL文件;默认行为是在编译器认为合适时批处理它们。您仍然无法控制命名。 (如果使用ASP.NET merge工具,它可以将多个DLL合并为一个,您可以控制DLL文件的名称。)
具有不良名称的.compiled文件不是DLL文件,是在加载每个页面时找到正确的程序集和入口点所必需的。来自File Handling During ASP.NET Precompilation:
.compiled Files
对于ASP.NET Web应用程序中的可执行文件,编译器程序集和.compiled文件扩展名的文件。程序集名称由编译器生成。 .compiled文件不包含可执行代码。相反,它只包含ASP.NET查找相应程序集所需的信息。
部署预编译的应用程序后,ASP.NET使用Bin文件夹中的程序集来处理请求。预编译输出包括.aspx或.asmx文件作为页面的占位符。占位符文件不包含任何代码。它们的存在只是为了提供一种为特定页面请求调用ASP.NET的方法,因此可以设置文件权限来限制对页面的访问。
答案 1 :(得分:1)
假设您使用的是Visual Studio 2010,则以发布模式发布Web应用程序将创建占位符文件。如果要设置某些条件编译选项,可以在WebProject属性的“构建”选项卡下设置它们。至于设置程序集的固定名称,请参阅此页面:
http://msdn.microsoft.com/en-us/library/bb398860.aspx#PreCompilingToFixedNameAssemblies
查找预编译到固定名称程序集,预编译到签名程序集
希望这有帮助。