使用aspnet_compiler.exe编译.Net Web Apps

时间:2009-10-14 20:15:45

标签: asp.net asp.net-mvc unit-testing nant aspnet-compiler

我的.Net Web应用程序的顶层代码我想要进行单元测试,但是当我的构建服务器使用aspnet_compiler.exe编译项目时,它会生成一个完全没有的.dll文件可用于另一个项目,即NUnit测试项目。

(ASP .Net Web应用程序和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 个答案:

答案 0 :(得分:4)

  

我的.Net网络应用程序的顶层有代码,我想进行单元测试[...]

停在那儿;那就是问题所在。将该代码放入帮助程序,并在ASP.NET之外进行测试。

答案 1 :(得分:3)

您不需要使用aspnet_compiler.exe。这只是一个实用程序应用程序,用于预编译您的aspx页面,以避免用户第一次点击页面时的启动延迟。

据我了解,构建解决方案时,ASP.NET MVC Web应用程序中的任何非aspx / ascx代码都将正常编译为DLL。然后,您的NUnit测试项目可以使用此DLL。我认为这是你要测试的那些比特。

所以,只需使用来自NAnt的MSBuild构建项目,忘记aspnet_compiler.exe。

答案 2 :(得分:1)

难道你不能在这里运行,而不是在Nant中作为后期构建事件吗?

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

(其中FilePathToMyWebProject是项目文件相对于解决方案文件的路径)

答案 3 :(得分:0)

我们使用MSBuild和构建文件来编译Web应用程序并运行测试,如果你可以跳过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>