代码之家  ›  专栏  ›  技术社区  ›  Brett Rigby

使用aspnet_compiler.exe编译.NET Web应用程序

  •  2
  • Brett Rigby  · 技术社区  · 16 年前

    我在.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 回复  |  直到 7 年前
        1
  •  3
  •   Andy Grout    16 年前

    您不需要使用aspnet_compiler.exe。这只是一个实用程序,用于预编译ASPX页面,以避免用户第一次访问页面时出现启动延迟。

    据我所知,在构建解决方案时,ASP.NET MVC Web应用程序中的任何非ASPX/ASCX代码都将正常编译为DLL。然后,您的nunit测试项目可以使用此dll。我想这就是你想测试的部分。

    所以,只需使用来自nant的msbuild构建项目,而忽略aspnet_compiler.exe。

        2
  •  4
  •   Craig Stuntz    16 年前

    我在.NET Web应用程序的顶层有代码,我想对其进行单元测试[…]

    停在那里,这就是问题所在。将该代码放入助手中,并在ASP.NET外部对其进行测试。

        3
  •  1
  •   Dan Atkinson    16 年前

    你不能在这里运行类似的程序,而不是在南特作为一个后期构建的事件吗?

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

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

        4
  •  0
  •   Decker97    16 年前

    我们使用带有生成文件的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>
    
    推荐文章