使用MSBuild预编译ASP.NET Web应用程序

时间:2009-10-13 07:04:11

标签: c# asp.net msbuild csproj precompile

我在Visual Studio 2008中有一个c #Web应用程序项目,我想要进行预编译以进行部署。在查看各种选项之后,似乎所有这些选项都存在一些问题 - 或许有人可以就此发表意见:

该项目受源代码管理,并且还包含许多从项目中排除的文件。

Web部署项目不起作用。如果我尝试使用wdp进行编译,aspnet_compiler.exe也会尝试编译所有排除的文件。我不想在msbuild脚本中维护一个排除列表。

有没有办法告诉msbuild只使用csproj文件中指定的文件/项目,将这些文件/项目复制到一个中间文件夹,并从这个不包含任何排除文件的副本中构建aspnet_complier.exe?

该网站与其他3个csproj文件有所依赖。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使msbuild任务隐藏(attrib + h)或删除不需要的文件......

  <PropertyGroup>
    <MyLogFile>kaantologi.txt</MyLogFile>
    <MyWebSourcePath>c:\sourecontrol\myweb</MyWebSourcePath>
    <!-- *.tmp and .exclude and etc: -->
    <MyCleaup>
      attrib $(MyWebSourcePath)\*.tmp -r -s -h -a /s >>$(MyLogFile)
      del $(MyWebSourcePath)\*.tmp /q /s >>$(MyLogFile)
      attrib $(MyWebSourcePath)\*.exclude +h
    </MyCleaup>
  </PropertyGroup>
  <Target Name="MyClean">
    <Exec Command="$(MyCleaup)" />
  </Target>
  <Target Name="MyFinal">
    <Exec Command="attrib $(MyWebSourcePath)\*.exclude -h"/>
  </Target>
  <Target Name="MyBuild">
    <CallTarget Targets="MyClean" />
    <CallTarget Targets="MyCompile" /><!--...-->
    <CallTarget Targets="MyFinal" />
  </Target>

或者您可以使用解决方案文件(.sln)并将csproj放在那里并构建它。

聚苯乙烯。不完全是您的问题,但这可能有所帮助(它适用于网站,而不适用于Web应用程序):

Unable to publish using msbuild or aspnet_compiler using cc.net

答案 1 :(得分:0)

您有什么理由不能将aspnet_compiler.exe作为部署脚本的一部分运行吗? 如果不使用这些文件,为什么会这样?

建议:在部署时运行编译器或删除文件