【问题标题】:aspnet_compiler -fixednames does not work?aspnet_compiler -fixednames 不起作用?
【发布时间】:2010-07-11 22:19:42
【问题描述】:

我无法使用 -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 来为代码隐藏创建单文件 dll?

【问题讨论】:

  • 我认为你做的事情是正确的——我实际上做了你描述的同样的事情,而且效果很好。没有 website.dll,只有 aspx.dll。您使用的是 .NET 2.0 还是 3.5?此外,您是否有理由使用每页概念的网站/单个 DLL 而不是传统的 Web 应用程序?据我所见,传统的 Web 应用程序更易于使用、配置、部署等。
  • Joe,我们正在使用 Web 应用程序。我们有 100 个页面,因此我们需要部署单个页面的能力,而不是部署整个站点。你能用开关发布你的命令行来看看你做了什么吗?按 bin 文件夹中的大小排序,看看是否没有 mysebsite.dll 和 pdf 文件。谢谢。

标签: c# aspnet-compiler


【解决方案1】:

我认为真正的区别在于 Web 应用程序与网站的概念。我在 Visual Studio 中创建了两个相同的应用程序 - 一个作为 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 时,它只创建了一个 DLL,其中包含标记和 _Default 类。

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

根据我的阅读和理解方式,aspnet_compiler 是为网站项目设计的,而不是为 Web 应用程序项目设计的,这就是我假设您使用网站的原因。

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

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

希望这一切都说得通——祝你好运。

【讨论】:

  • 乔,谢谢你回来找我。我们的网站是一个“网站”项目,但是当我们开始添加 MVC 页面时,我们不得不将其更改为 Web 应用程序项目。是的,单页 dll 在网站项目中工作,但显然不是在 web 应用程序项目中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多