构建Web部署项目时找不到文件

时间:2011-05-16 10:49:45

标签: asp.net web-deployment-project

我有一个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

解决方案文件和项目文件与工作解决方案完全相同(除项目名称外)。

4 个答案:

答案 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>时,我已经看到类似(我的回忆无疑是有点朦胧!) }}。要查看这是否是问题:

  1. 在解决方案资源管理器中右键单击有争议的文件,然后选择Content
  2. 查看该文件的“构建操作”,如果它Properties将其更正为None
  3. 另一种可能性是,Content中的某些内容已经“错误”,因为ACL.ascx的路径看起来非常奇怪。 真的是否应该在.csproj之下?如果我的第一个建议没有帮助,我建议您尝试以下方法:

    1. 右键点击解决方案资源管理器中的/Foo.csproj/Properties/,然后选择Foo.csproj
    2. 完成卸载后,右键点击解决方案资源管理器中的Unload Project并选择Foo.csproj (Unavailable)
    3. 搜索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