aspnet_compiler不会编译放在Web应用程序目录下的c#代码

时间:2009-10-01 07:41:01

标签: c# asp.net aspnet-compiler

我一直在Visual Studio中使用鼠标右键单独发布网站,除了手动工作太多外,一切都很好。最近我改为使用构建脚本来调用aspnet_compiler来发布ASP.NET Web应用程序。在我的构建脚本中,我会做类似下面的事情:

sh "#{aspnet_compiler} -p ../src/webapp -v targetDir ./publish –u"

我的项目目录结构如下所示:

/build/rakefile.rb
/build/publish/ --published site goes here
/src/website/bll/ --business logic goes here
/src/website/ --aspx pages
/src/website/code/ --some c# code

当调用aspnet-compiler时,一切正常,除了 / src / website / code /下的c#代码不会被编译。在我看来,aspnet编译器在bll目录下编译c#代码然后 xcopied / src / website / 下的所有内容到发布目录(包括/ src / website / code / )。我不知道我是不是使用正确的开关调用aspnet-compiler,或者这是所希望的行为?

请帮助谢谢!

2 个答案:

答案 0 :(得分:2)

我发现了自己的问题。

首先,我的rake构建脚本最终看起来像这样:

sh "#{aspnet_compiler} -f -fixednames -u -p ../src/website -v / ./publish"

鼠标右键单击Visual Studio中的“发布”的输出行为与调用aspnet_compiler不同。

右键单击发布将:

  • 直接复制 Global.asax
  • 仅生成 .dll .pdb (如果不需要调试,则可以删除.pdb文件)bin目录下的文件

调用aspnet_compiler时的地方:

  • 将Global.asax编译为bin目录下的 App_global.asax.compiled App_global.asax.dll
  • 还会生成 PrecompiledApp.config (这是因为我指定的aspx页面应该是可更新的)

发布任务后有一个清理任务基本上删除了bin下的.dll扩展名以外的任何内容。

无论如何,现在我已经学到了新的东西。

答案 1 :(得分:1)

在构建机器上使用aspnet_compiler时我遇到了类似的问题(我使用过MSBuild)。我的解决方案是在调用aspnet_compiler之前构建解决方案。 在MSBuild中,它看起来像:

<MSBuild Projects="$(PhysicalPath)\solutionName.sln" Properties="Configuration=Debug"/>

您也可以使用devenv solutionName.sln / build(如果不使用MSBuild)。