Использование aspnet_compiler.exe для компиляции.Net Web Apps

У меня есть код в верхнем слое моего веб-приложения.Net, который я хотел бы выполнить модульным тестом, но когда мой сервер сборки компилирует проект с использованием aspnet_compiler.exe, он делает файл.dll, который вообще не может использоваться другим проект, то есть тестовый проект NUnit.

(Это относится к веб-приложениям ASP .Net и приложениям ASP .Net MVC.)

Я что-то здесь не так делаю? Вот мой скрипт NAnt, который вызывает компилятор...

<exec program="${asp.compiler.home}/aspnet_compiler.exe" failonerror="true">
   <arg value="-nologo"/>
   <arg value="-c"/>
   <arg value="-f"/>
   <arg value="-errorstack"/>
   <arg value="-v"/>
   <arg value="${project.name}"/>
   <arg value="-p"/>
   <arg value="${project::get-base-directory()}"/>
   <arg value="${web.deploy.dir}\${project.name}"/>
  </exec>

4 ответа

Решение

Вам не нужно использовать aspnet_compiler.exe. Это всего лишь служебное приложение для предварительной компиляции страниц aspx, чтобы избежать задержки при запуске, когда пользователь впервые заходит на страницу.

Насколько я понимаю, любой не aspx/ascx-код в вашем веб-приложении ASP.NET MVC будет нормально скомпилирован в DLL при сборке вашего решения. Эта DLL затем может быть использована вашим тестовым проектом NUnit. Я предполагаю, что это те биты, которые вы хотите проверить.

Итак, просто соберите проект с использованием MSBuild от NAnt и забудьте о aspnet_compiler.exe.

У меня есть код в верхнем слое моего веб-приложения.Net, который я хотел бы провести модульное тестирование [...]

Остановись прямо там; Это проблема. Поместите этот код в помощник и протестируйте его вне ASP.NET.

Разве вы не можете запустить что-то подобное здесь, а не в Нанте, как событие после сборки?

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v / -p "$(SolutionDir)\PathToMyWebProject"

(где FilePathToMyWebProject - путь к файлу вашего проекта относительно файла решения)

Мы используем MSBuild с файлом сборки для компиляции веб-приложения и запуска тестов. Если вы можете пропустить материал NAnt, вот соответствующий раздел из файла сборки (называемый как параметр для MSbuild.exe):

<!-- Build projects by calling the Project files generated by VS -->
  <Target Name="Build">
    <MSBuild Projects="$(ProjectFile)" />
    <MSBuild Projects="$(TestProjectFile)" />
  </Target>

  <!-- Run Unit tests -->
  <Target Name="Test" DependsOnTargets="Build">
    <CreateItem Include="ClearViewTest\Bin\Debug\ClearViewTest.exe">
      <Output TaskParameter="Include" ItemName="ClearViewTest" />
    </CreateItem>
    <NUnit Assemblies="@(ClearViewTest)" ToolPath="C:\Program Files\NUnit 2.4\bin" ContinueOnError="false" OutputXmlFile="SoultionTestResults.xml" />
  </Target>
Другие вопросы по тегам