標籤:存在 基於 view 技術 如何 實踐 項目 ide 使用方法
在發布asp.net網站和windows服務項目時,有的時候這樣的需求:msbuild編譯之後發布到伺服器指定目錄時要排除指定檔案,比如通過jenkins構建時,不希望覆蓋原來的Web.config和App.config,那麼該如何排除呢?
web網站項目
比如不希望發布Web.config檔案,有以下三種方法。
1,將項Content改為None
修改前:
1 <Content Include="Web.config" />
修改後:
1 <None Include="Web.config" />
2,使用項的Exclude屬性
如下代碼:
1 <Content Include="Web.config" Exclude="Web.config" />
注意:
這種方式雖然可以實現發布時排除,但是同時也從項目中排除了,對於本地開發調試不方便。
3,使用Target和ExcludeFromPackageFiles
添加新的Target節點,如下代碼:
1 <!--通過ExcludeFromPackageFiles排除Web.config-->2 <Target Name="CustomExcludeFiles" BeforeTargets="ExcludeFilesFromPackage">3 <ItemGroup>4 <ExcludeFromPackageFiles Include="Web.config"></ExcludeFromPackageFiles>5 </ItemGroup>6 </Target>
View Code
總結:最佳實務是使用方法3,既可以實現發布時排除,又能保證檔案存在於項目中,不影響本地開發和調試。
另外:
由於msbuild基於.csproj專案檔,所以以上操作都是修改.csproj檔案,修改方法如下:
1,卸載項目
如:
2,編輯csproj檔案
如:
windows服務項目
由於在windows服務項目中,App.config本來就是None類型的,且使用Target和ExcludeFromPackageFiles的方式不適用,所以暫時使用項的Exclude屬性實現。
修改前:
1 <None Include="App.config" />
修改後:
1 <None Include="App.config" Exclude="App.config" />
參考資料
1,https://stackoverflow.com/questions/6358635/exclude-files-from-web-site-deployment-with-msbuild
2,msbuild參考:https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild
web網站和windows服務項目發布時如何排除指定檔案