簡體   English   中英

MSBuild從輸出中排除附屬程序集

[英]MSBuild exclude satellite assemblies from output

是否有可能告訴MSBuild不要為某個組件或所有組件復制衛星組件?

我有一個nuget包,其中包含資源程序集,但我不想將它們包含在我的輸出中。

謝謝。

您可以有一個單獨的文件夾進行部署,例如\\ Build_Archive,其中也會復制輸出 - 並在構建腳本中添加一些行來復制程序集,而不是將衛星程序集添加到這些文件夾 - 這樣,Build_Archive總是只有文件部署所需的。

即我當前的腳本復制到build#labeled文件夾和Current文件夾 - 所以Current總是有最新版本,我們保留以前版本的歷史記錄 - 如:

C:\Build_Archive\AppName\Current
C:\Build_Archive\AppName\1.0.0.1
C:\Build_Archive\AppName\1.0.0.2

在構建腳本的末尾就是這樣的東西(替換<values>代替你的東西。我們的腳本使用外部DLL來管理版本號等,所以這里不包括):

 <!-- . . . -->
 <DropLocation>\\<serverName>\Build_Archive\${BuildDefinition}</DropLocation>
 <!-- . . . -->

 <!-- Version numbers major and build are replaced by outside calls not shown -->
 <PropertyGroup>
   <VersionMajor>1</VersionMajor>
   <VersionMinor>0</VersionMinor>
   <VersionService>0</VersionService>
   <VersionBuild>0</VersionBuild>
 </PropertyGroup>

 <Target Name="BuildNumberOverrideTarget">
 <!-- Create a custom build number, matching the assembly version -->
 <!-- . . . -->
 <!-- …  custom version code call – returns / sets VersionMajor and VersionBuild -->
  <PropertyGroup>
   <BuildNumber>$(BuildDefinitionName)_$(VersionMajor).$(VersionMinor).$(VersionService).$(VersionBuild)</BuildNumber>
  </PropertyGroup>
  <Message Text="Build number set to &quot;$(BuildNumber)&quot;" />
  <Message Text="$(SolutionRoot)"/>
 </Target>


 <Target Name="AfterCompile">
 <!-- Call Copy process after the build -->
  <CallTarget Targets="CleanUp"/>
  <CallTarget Targets="StageBuild"/>
  <CallTarget Targets="CopyFiles"/>
 </Target>

 <!-- Target : Clean Current Folder for next build -->
 <Target Name="CleanUp">
  <Message Text="**** Entering::CleanUp ****"/>
  <CreateItem Include="\\<server name>\Build_Archive\<appName>\Current\**\*.*">
   <Output ItemName="PreviousFiles" TaskParameter="Include" />
  </CreateItem>
  <Delete Files="@(PreviousFiles)" ContinueOnError="true" />
 </Target>

 <!-- Target:StageBuild -->
 <Target Name="StageBuild">
 <ItemGroup>
  <BldCurrent Include="\\<server name>\Build_Archive\<appName>\Current\"/>
 </ItemGroup>
 <Message Text="@(BldCurrent)"/>
 <Message Text="$(SolutionRoot)"/>
 <!— Here – replace next line with commands to copy only the files you want to deploy -->
  <Exec Command="xcopy /y /r /e $(SolutionRoot)\..\bin\*.* @(BldCurrent)"/>
 </Target>

 <!-- Target : Copy files from Current to BuildNum folder -->
 <Target Name="CopyFiles">
  <Exec Command="xcopy /y /r /e $(DropLocation)\Current\Debug\*.* $(DropLocation)\$(BuildNumber)\Debug\"/>

  <Exec Command="Del /Q $(DropLocation)\Current\Debug\*.config"/>
  <Exec Command="Del /Q $(DropLocation)\Current\Debug\*.dll"/>
  <Exec Command="Del /Q $(DropLocation)\Current\Debug\*.exe"/>
  <Exec Command="Del /Q $(DropLocation)\Current\Debug\*.application"/>
  <Exec Command="Del /Q $(DropLocation)\Current\Debug\*.pdb"/>
  <Exec Command="Del /Q $(DropLocation)\Current\Debug\*.txt"/>
  <Exec Command="Del /Q $(DropLocation)\Current\Debug\*.xml"/>
 </Target>

嘗試使用以下參數調用MSBuild:

/p:UseWPP_CopyWebApplication=True /p:PipelineDependsOnBuild=False

這將應用VisualStudio將執行的web.config轉換。 此外,bin文件夾輸出也與VisualStudio發布中的輸出相同。 衛星裝配不會直接復制到bin文件夾中,而是保留在bin子文件夾中。

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM