aspnet_compiler: ASP解析器无法加载类型。

17

我无法在我们的构建环境中构建我的Web应用程序(而不是Web站点)。我们在构建环境中使用DMAKE(不可协商),因此不允许使用MSBUILD。当通过以下方式调用asp.net预编译器时

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -d -nologo -p Site -f -fixednames -errorstack -v / Debug

我们遇到以下错误

error ASPPARSE: 无法加载类型“X.Y.Admin.Site.Global”

如果我从IDE编译,它就会成功。如果我然后使用aspnet_compiler编译,它也会成功。因此,只有当我要编译的目标dll位于我正在编译的Web应用程序的bin目录中时,才能成功地使用aspnet_compiler编译。

我一直在看那些使用MSBUILD解决方案的文章,但很遗憾我不能尝试。

任何帮助将不胜感激。

8个回答

15

我们的 Web 应用程序遇到了相同的问题: 错误 ASPPARSE: 无法加载类型 '...'

问题在于该文件已存储在磁盘上(在项目文件夹中),但未包含在应用程序项目中(在 .csproj 文件中)。我们通过将该文件包含在项目中解决了这个问题:)


相反地,我通过从硬盘中删除那些旧文件来解决这个问题,因为在我的情况下,这些文件已不再被项目引用,因为我们不需要它们。 - Keiki

4

我曾经使用NANT遇到过类似的问题。解决方法是将Web应用程序代码文件编译成dll,然后在使用aspnet_compiler时包含该文件。

使用命令行编译器,无论是csc.exe(C#)还是vbc.exe(Visual Basic),都可以将您的Web应用程序编译为库类型的输出。这将创建一个dll,您可以在aspnet_compiler任务中使用它。


我曾错误地认为aspnet_compiler也会编译Web应用程序并创建dll。(其中的asp和compiler这些词让我产生了这样的想法!) - AndyM
+1 对这个答案,它对我也起作用了(谢天谢地!)。在 StackOverflow 出现之前我们到底是怎么做的呢? :-) - gerrod
@gerrod,我正在暴露自己的年龄,也许你的问题是反问的,但我们曾经有过Google Groups,在那之前我们有布告栏、论坛和UseNet。当时很棒,因为没有人评分(主要只是同侪压力),但那是在编程人员相对较少的好日子里 :) 不要误解,SO也有它的优点。 - clairestreb

2

1
对于Web应用程序,您必须将.vb文件构建到dll中,并在运行aspnet编译器之前将其放入bin文件夹中。在Visual Studio的输出窗口中检查VB编译器的命令行,然后先运行它,再运行aspnet编译器,这样asp页面应该就可以找到缺少的类型了。

1
这个问题对我来说得到了解决,只需删除所有的binobj文件夹即可。似乎它们以某种方式处于糟糕的状态。我还删除了.sou文件,但我认为那不是问题所在。

0

我遇到了同样的问题。

我通过将我的 Web 应用程序的 DLL 从 OBJ/DEBUG 文件夹复制到 BIN 文件夹来解决它。


0

我刚刚遇到了这个错误,并找到了两种解决方法:

  • 在global.asax文件中将Codebehind属性更改为CodeFile,并在类声明中添加“partial”
  • 在部署项目的属性页面中,设置“版本输出程序集”并提供版本号

我不太清楚为什么这两种方法都有效,但它们确实有效。


0
解决方案:

-p 网站路径必须包含 .csproj 文件位置的目录路径。

例如:

aspnet_compiler -p D:\Projects\MGM\mgm\mgm -v / D:\Projects\MGM-deploy\mgm_compiled

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接