Visual studio 2010 如何从NAnt获得VS2010 Web.config转换?

Visual studio 2010 如何从NAnt获得VS2010 Web.config转换?,visual-studio-2010,msbuild,nant,Visual Studio 2010,Msbuild,Nant,在我的Nant文件中,我得到(路径缩短): 解决方案和相关项目都是VS2010,Web应用程序甚至在.csproj中有正确的引用: <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 这难道不应该起作用吗?您不能,这不是NAnt特有的问题,您不能对解决方案文件调用Transfor

在我的Nant文件中,我得到(路径缩短):

解决方案和相关项目都是VS2010,Web应用程序甚至在.csproj中有正确的引用:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />


这难道不应该起作用吗?

您不能,这不是NAnt特有的问题,您不能对解决方案文件调用
TransformWebConfig

解决方案:

  • 在项目文件中调用它:

     <exec program="${framework}\msbuild.exe"
           commandline="..\src\WebApp\WebApp.csproj /m /t:TransformWebConfig /p:Configuration=Release" />
    

我无法使用TransformWebConfig选项或后构建目标,但是,这是我的答案。简而言之,这就是我在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

设置
使用wpp_CopyWebApplication=True
就是诀窍-谢谢!
 <exec program="${framework}\msbuild.exe"
       commandline="..\src\WebApp\WebApp.csproj /m /t:TransformWebConfig /p:Configuration=Release" />
<Target Name="AfterBuild">
  <CallTarget Targets="TransformWebConfig"/>
</Target>
<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..." />