Как вы обрабатываете исключенные файлы с aspnet_compiler? - PullRequest
9 голосов
/ 07 марта 2011

Я пытаюсь использовать aspnet_compiler для перемещения проекта, который уже скомпилирован, из одного места в другое.Я использую Subversion для контроля версий.

Процесс в основном получает весь код из Subversion, выполняет сборку, затем вызывает aspnet_compiler.

Моя проблема возникает, когда яисключенный файл ascx.Этот файл является частью последнего кода, но обычный компилятор сборки игнорирует его, поэтому никаких проблем.Aspnet_compiler взрывается, однако, потому что он не может найти код для этого конкретного элемента управления.

Я не уверен, если

  • Я делаю это правильно;
  • есть способ просто получить правильное дерево файлов из Subversion
  • Есть более простой способ;или
  • это ожидается, и мне нужно каждый раз удалять исключенные файлы.

Буду признателен за любую помощь.

Том

Ответы [ 4 ]

10 голосов
/ 02 ноября 2015

Начиная с .NET 4.5 или 4.5.1 (я не уверен, какой именно), в aspnet_compiler.exe была добавлена ​​опция -x , которая позволяет исключать каталоги из компиляции.Вы можете найти этот параметр с помощью команды "aspnet_compiler /?".

-x            The virtual path of a directory that should be excluded from precompilation.
This switch can be used multiple times.

Пример:

На моем веб-сайте есть папка с именем" ToBeExcluded ".Я могу использовать следующую команду для предварительной компиляции веб-сайта и исключения этой папки:

aspnet_compiler -v /foo -p "C:\MyWebsite" -x ToBeExcluded "c:\temp\web"
3 голосов
/ 17 марта 2011

Ожидается: Aspnet_compiler.exe компилирует все файлы в приложении и не просматривает файл проекта. Таким образом, он не имеет никакого понятия об исключенном файле.

Предложение Бабака Наффаса об удалении файла, вероятно, является самым простым способом справиться с файлом, вместо того, чтобы каждый раз вручную удалять его (или записывать его удаление).

1 голос
/ 09 апреля 2018

Существует очень простой способ сделать это: установите для скрытого атрибута папку, которую следует исключить, и aspnet_compiler пропустит ее.

Типичным случаем для этой ошибки является созданная папка node_modules.npm install

Если вы запускаете npm install из скрипта или из командной строки, вы можете запустить команду attrib, после запуска nmp install, чтобы скрыть папку:

attrib +H node_modules

Если вы запускаете npm install из проекта msbuild, вы можете добавить задачу exec, например:

<PropertyGroup>
    <HideFolder>attrib +H "$(PackageJsonFolder)\node_modules"</HideFolder>
</PropertyGroup>
<!-- next line is for debugging, remove it when finished -->
<Warning Text="Hide node_modules command: '$(HideFolder)'"/>
<Exec Command="$(HideFolder)">

Код выхода для команды attrib всегда равен нулю, вменьше всего в моих тестах, поэтому нет смысла проверять его, чтобы определить, была ли команда выполнена успешно.

В предыдущем примере msbuild папка для скрытия была "$(PackageJsonFolder)\node_modules", потому что свойство PackageJsonFolder являетсяимя папки, в которой находится packages.json файл, и, таким образом, где будет создано node_modules.

В других случаях вы всегда можете указать свою папку относительно местоположения проекта, например:

<HideFolder>attrib +H "$(MSBuildProjectDirectory)\folder\to\hide"</HideFolder>

и выполните команду, используя ту же известь из предыдущего примера.

1 голос
/ 04 апреля 2017

Я так долго боролся с этим.Но в итоге нашел обходной путь

attrib +h folderToExclude & runAspComplierWithAllOptions & attrib -h folderToExclude

Скрыть папку -> Скомпилировать -> Показать папку.

...