aspnet_compiler -fixednames不起作用?

时间:2010-04-23 21:35:34

标签: c# aspnet-compiler

我无法使用-fixednames开关为cs代码后台文件创建dll。 bin文件夹中的文件是编译的aspx页面,但是文件后面的代码都被编译成一个大的websitename.dll文件。

这是我带开关的命令。 aspnet_compiler -v / -p E:\ Source \ DotNet4 \ mysolution \ website -f -d -fixednames E:\ Source \ DotNet4 \ CompiledWebSite

这会在bin文件夹中生成许多文件。

website.dll和website.pdb(后面包含代码) myform1.aspx.643c7876.dll(已编译的aspx布局ui)

我一遍又一遍地测试了这一点,以确保我没有遗漏任何东西。测试是在myform1.aspx上放置一个标签,并在代码隐藏中用一些文本填充标签。使用上述交换机编译网站并部署网站。

更改myform1代码隐藏并更改标签文本。编译并仅将myform1.aspx.643c7876.dll部署到网站。结果:标签仍然相同。现在部署website.dll和pdb并更改标签。

有谁能告诉我如何让-fixednames为codebehind创建sinle dll?

1 个答案:

答案 0 :(得分:1)

我认为区别在于Web应用程序与Web站点的概念。我在Visual Studio中创建了两个相同的应用程序 - 一个作为Web应用程序,另一个作为Web站点。该页面是default.aspx,类是“_Default”。当我在 Web应用程序上运行“aspnet_compiler -v / -p。-f -d -fixednames .. \ CompiledSite”时,新bin中有2个dll,一个名为WebApplication1.dll,并且它包含_Default类,还有一个名为App_Web_default.aspx.cdcab7d2.dll,其中包含标记。当我使用完全相同的命令行编译 WebSite 时,它只创建了一个带有标记和_Default类的DLL。

不要问我它是如何知道两者之间的区别的 - 我唯一能想到的是Web应用程序存在csproj文件这一事实。

从我读过的内容和我理解的方式来看,aspnet_compiler是为WebSite项目设计的,而不是Web应用程序项目,这就是为什么我认为你使用的是WebSite。

如果您需要将您的应用程序设计为单页面DLL,请尝试构建一个新的WebSite项目,将.aspx和.aspx.cs文件添加到该WebSite,并使用您的aspnet_compiler命令进行编译,看看会发生什么。您可以从一页或两页开始样本。

您不需要实际测试和重新编译等以确定它是否有效 - 只需查看Reflector中的DLL文件,并查看您的类所在的位置 - 如果它们与标记位于同一个DLL中,然后它工作,否则,它们必须在集中式应用程序DLL中。

希望一切都有意义 - 祝你好运。