我有一个Web部署项目,用于构建和压缩Web应用程序项目。我在构建WDP时遇到了很多错误,如下所示:
错误73文件'/Foo.csproj/Properties/Administration/Modules/ACL.ascx'不存在。 /Foo.csproj/Properties/Administration/ACL.aspx
错误74未知服务器标记'foo:ACL'。 /Foo.csproj/Properties/Administration/ACL.aspx
这些错误来自Web部署项目,而不是WAP。 错误总是遵循相同的模式,首先是找到.ascx时出错,然后是一个相关的错误,说明与之前的ascx相关的服务器标签是未知的(这显然是有道理的)。
ascx或aspx中没有错误或警告。
使用<%@ Register %>
标记注册控件(而不是在web.config中注册)
可能导致这种症状的原因是什么?
更新
错误来自aspnet_compiler.exe
,它使用以下命令运行:
C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_compiler.exe -v“/Foo.csproj”-p“C:\ Projects \ Foo \ Foo”-u -f -d obj \ Staging \ TempBuildDir
并产生以下错误
预编译ASP.NET应用程序的实用程序
版权所有(C)Microsoft Corporation。版权所有。 /Foo.csproj/Properties/Administration/ACL.aspx(5):错误ASPPARSE:文件'/Foo.csproj/Properties/Administration/Modules/ACL.ascx'不存在。
/Foo.csproj/Properties/Administration/ACL.aspx(7):错误ASPPARSE:未知的服务器标签'foo:ACL'。
在Foo.csproj中,ACL.aspx被声明为
<Content Include="Administration\ACL.aspx" />
<!-- Snip -->
<Compile Include="Administration\ACL.aspx.cs">
<DependentUpon>ACL.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Administration\ACL.aspx.designer.cs">
<DependentUpon>ACL.aspx</DependentUpon>
</Compile>
和ACL.ascx为
<Content Include="Administration\Modules\ACL.ascx" />
<!-- Snip -->
<Compile Include="Administration\Modules\ACL.ascx.cs">
<DependentUpon>ACL.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Administration\Modules\ACL.ascx.designer.cs">
<DependentUpon>ACL.ascx</DependentUpon>
</Compile>
我无法理解路径的/Properties/
元素来自错误路径中的哪个位置!它不在项目文件中,也没有被提供给aspnet_compiler.exe
。
解决方案文件和项目文件与工作解决方案完全相同(除项目名称外)。
答案 0 :(得分:12)
我刚刚在办公桌的一个项目中遇到过同样的情况,这是我的解决方案:
//doesn't work
<%@ Control Language="C#"
AutoEventWireup="true"
Inherits="Controls_CatalogCustomerORW"
CodeFile="CatalogCustomerORW.ascx.cs" %>
//does work
<%@ Control Language="C#"
AutoEventWireup="true"
Inherits="Controls_CatalogCustomer"
Codebehind="CatalogCustomer.ascx.cs" %>
错误似乎是微妙的CodeFile
vs CodeBehind
答案 1 :(得分:2)
当文件的“Build Action”设置为None
而不是{{1>时,我已经看到类似(我的回忆无疑是有点朦胧!) }}。要查看这是否是问题:
Content
Properties
将其更正为None
。另一种可能性是,Content
中的某些内容已经“错误”,因为ACL.ascx的路径看起来非常奇怪。 真的是否应该在.csproj
之下?如果我的第一个建议没有帮助,我建议您尝试以下方法:
/Foo.csproj/Properties/
,然后选择Foo.csproj
Unload Project
并选择Foo.csproj (Unavailable)
Edit Foo.csproj
并将该文件的XML标记与另一个未生成错误的“好”文件进行比较,可能存在导致错误的细微差别答案 2 :(得分:2)
我遇到了类似的错误。
我的情况如下:
root/page.aspx
root/page.aspx.cs
root/page.aspx.designer.cs
root/X/page.aspx
由于某些原因有人将page.aspx文件复制到X文件夹,甚至从我的Web应用程序项目中删除该文件,部署项目仍然存在问题。我还注意到,即使使用不同的名称(例如x文件夹中的page.aspx副本,问题仍然存在)。
只有当我从X文件夹中删除文件page.aspx(或其中的任何名称)时,它才有效。
答案 3 :(得分:0)
在我的情况下,我通过删除CodeFile="MyFile.aspx.cs"
文件中的MyFile.aspx
属性来解决问题。我认为错误的发生是因为CodeFile
属性优先于<SubType>ASPXCodeBehind</SubType>
中的值MyProject.csproj
。