【问题标题】:How do I specify where MSBUILD publishes a web service too?如何指定 MSBUILD 也在何处发布 Web 服务?
【发布时间】:2013-02-26 14:33:29
【问题描述】:

我在网络上看到了很多关于此的信息,但没有任何明确和具体的信息似乎解决了将网络服务或网站简单地发布到我在构建时指定的特定文件夹的问题。

我正在使用 Nant 和 Nant Contrib:

 <target name="build" description="builds the service">

        <msbuild project="${buildoutput}\${service.source}\wsMyService.sln" >           
            <property name="Configuration" value="Release" />           
            <property name="PublishDir" value="${buildoutput}\${service.target}\" />            
            <property name="Targets" value="Publish" />
        </msbuild>

    </target>

谁能告诉我这应该怎么做。我可以在项目的属性页中更改输出文件夹,但我希望它可以从 Nant 进行配置,以便我可以在构建时指定路径。

【问题讨论】:

    标签: msbuild nant nantcontrib


    【解决方案1】:

    当您从命令行调用 msbuild 时,您可以传入字符串以分配给 msbuild 属性。我对 NAnt 一无所知,所以我认为它必须求助于调用 msbuild.exe。因此,您可以像这样覆盖 msbuild 属性:

    MsBuild /property:buildoutput=C:\arbitrary\folder\bin\
    

    从命令行指定的这些属性会覆盖您在构建文件中指定的任何内容。

    【讨论】:

    • 构建输出和发布一样吗?
    【解决方案2】:

    这是我目前使用 msbuild 构建 web 服务的内容:

    <Target Name="BuildWebService">
        <ConvertToAbsolutePath Paths="$(Root)">
          <Output TaskParameter="AbsolutePaths" PropertyName="Root" />
        </ConvertToAbsolutePath>
    
        <ItemGroup>
          <WebServices Include="$(Root)\services\Solutions\**\*.host.csproj"/>
        </ItemGroup>
    
      <MSBuild Projects="%(WebServices.FullPath)"
              Targets="Build"
              Properties="WebProjectOutputDir=$(Root)\services\build\WebService\%(RecursiveDir);OutDir=$(Root)\services\build\WebService\%(RecursiveDir)\bin\" />
      </Target>
    

    希望你能很容易地翻译成 nant。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 2012-06-12
      相关资源
      最近更新 更多