Файл не найден при создании проекта веб-развертывания

У меня есть проект веб-развертывания, который создает и заархивирует проект веб-приложения. При построении WDP я получаю много ошибок, а именно:

Ошибка 73 Файл /Foo.csproj/Properties/Administration/Modules/ACL.ascx не существует. /Foo.csproj/Properties/Administration/ACL.aspx

Ошибка 74 Неизвестный тег сервера "foo: ACL". /Foo.csproj/Properties/Administration/ACL.aspx

Эти ошибки исходят от проекта веб-развертывания, а не от 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
Copyright (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.

Файл решения и файлы проекта идентичны (за исключением названий проектов) рабочему решению.


person Greg B    schedule 16.05.2011    source источник


Ответы (4)


Я только что столкнулся с такой же ситуацией в проекте на своем столе, и вот мое решение:

//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 по сравнению с CodeBehind.

person jcolebrand    schedule 26.06.2012

Я видел что-то похожее на это (мои воспоминания, надо признать, немного туманные!), Когда "Действие сборки" для файла установлено на None, а не на Content. Чтобы узнать, не в этом ли проблема:

  1. Щелкните правой кнопкой мыши проблемный файл в обозревателе решений и выберите Properties
  2. Посмотрите на «Действие сборки» для файла, если там написано None, исправьте его на Content.

Другая возможность состоит в том, что в вашем .csproj что-то пошло «не так», поскольку путь к ACL.ascx выглядит явно странным. Должно ли оно действительно быть меньше /Foo.csproj/Properties/? Если мое первое предложение не помогло, я бы посоветовал попробовать следующее:

  1. Щелкните правой кнопкой мыши Foo.csproj в обозревателе решений и выберите Unload Project.
  2. После завершения выгрузки щелкните правой кнопкой мыши Foo.csproj (Unavailable) в обозревателе решений и выберите Edit Foo.csproj
  3. Найдите ACL.ascx и сравните разметку XML для этого файла с другим "хорошим" файлом, который не генерирует ошибку, вероятно, есть небольшая разница, которая вызывает ошибку.
person Rob    schedule 16.05.2011
comment
да, ... / Properties / ... выглядит странно, но я не вижу такого пути ни в одном из моих файлов проекта. Я буду копать. Приветствия за мысли - person Greg B; 16.05.2011

У меня была аналогичная ошибка.

Моя ситуация была следующей:

root/page.aspx
root/page.aspx.cs
root/page.aspx.designer.cs
root/X/page.aspx

по какой-то причине кто-то скопировал файл page.aspx в папку X, и даже удалив файл из моего проекта веб-приложения, у проекта развертывания все еще были проблемы. Я также заметил, что даже с другим именем (например, копия page.aspx в папке x, проблема все равно возникает).

Это сработало только тогда, когда я удалил файл page.aspx (или любое другое имя) из папки X.

person Guilherme Meinlschmiedt Abdo    schedule 03.01.2012

В моем случае я решил проблему, удалив атрибут CodeFile="MyFile.aspx.cs" из файла MyFile.aspx. Я думаю, что ошибка возникает из-за того, что атрибут CodeFile имеет больший приоритет над значением <SubType>ASPXCodeBehind</SubType> в MyProject.csproj.

person Vitaliy Tokarev    schedule 09.04.2018