在我的Nant文件中,我得到了(路径缩短):
<echo message="#### TARGET - compile ####"/>
<echo message=""/>
<echo message="Build Directory is ${build.dir}" />
<exec program="${framework}\msbuild.exe"
commandline="..\src\Solution.sln /m /t:Clean /p:Configuration=Release" />
<exec program="${framework}\msbuild.exe"
commandline="..\src\Solution.sln /m /t:Rebuild /p:Configuration=Release" />
<exec program="${framework}\msbuild.exe"
commandline="..\src\Solution.sln /m /t:TransformWebConfig /p:Configuration=Release" />
结果是:
Build FAILED. "C:\..\src\Solution.sln" (TransformWebConfig target) (1) -> C:\..\src\Solution.sln.metaproj : error MSB4057: The target "TransformWebConfig" does not exist in the project. [C:\..\src\Solution.sln] 0 Warning(s) 1 Error(s)Time Elapsed 00:00:00.05
解决方案和相关项目都是VS2010,Web应用程序甚至在.csproj中都有正确的引用:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
这应该不起作用吗?
答案 0 :(得分:4)
你不能,这不是特定于NAnt的问题,你只是不能在解决方案文件上调用TransformWebConfig
。
解决方案:
在项目文件中调用它:
<exec program="${framework}\msbuild.exe"
commandline="..\src\WebApp\WebApp.csproj /m /t:TransformWebConfig /p:Configuration=Release" />
覆盖项目文件中的AfterBuild
目标以调用TransformWebConfig:
<Target Name="AfterBuild">
<CallTarget Targets="TransformWebConfig"/>
</Target>
答案 1 :(得分:3)
我无法使用TransformWebConfig选项和AfterBuild目标,但是,这个post是我的答案。简而言之,这就是我的“构建”目标在Nant中的样子:
<target name="build" description="Compiles/Builds the Solution">
<echo message="Building..." />
<property name="build.configuration" value="Release" />
<msbuild project="${path::combine(staging.project,'_solutions\mySolutionName.sln')}" verbosity="minimal" failonerror="true" verbose="false">
<arg value="/p:Configuration=${build.configuration};OutputPath=${path::combine(staging.output,'bin')}" />
<arg value="/p:UseWPP_CopyWebApplication=True" />
<arg value="/p:PipelineDependsOnBuild=False" />
<arg value="/p:WebProjectOutputDir=${staging.output}\" />
<arg value="/t:Rebuild" />
<arg value="/nologo" />
</msbuild>
<echo message="Building finished..." />
网站运行所需的所有文件都将复制到指定的“WebProjectOutputDir”属性中,包括应用了转换的web.Config。它就像一个魅力:)
-Diego