簡體   English   中英

.Net core 6:如何在沒有程序集的情況下擁有 output 目錄

[英].Net core 6: How to have output directory without assemblies

我正在將公司產品從.Net 4.8 移植到.Net core 6 中。 在解決方案中,有一個 output 目錄,其中包含:Assemblies、Configuration、Log、Resources 目錄以及啟動器項目的 only.exe、.pdb 和.exe.config。 Dll 在 Assemblies 目錄中,我絕對需要復制相同的結構。

在啟動器 project.csproj 文件中,我們設置了:

<OutputPath>$(SolutionDir)\$(Configuration)</OutputPath>

在其他方面:

<OutputPath>$(SolutionDir)\$(Configuration)\Assemblies</OutputPath>

在編譯過程中,VS Studio Professional 2022 繼續復制 ProjectReference 包含的項目的.dlls/.pdbs,並遞歸地越來越多地復制所有.dlls。 為了避免這種行為,我嘗試了很多方法,例如使用所有這些屬性(也在不同的設置組合中:無,全部,編譯......)但問題仍然存在:

<CopyLocalLockFileAssemblies>
<CopyLocal>
<CopyLocalSatelliteAssemblies>
<IncludeAssets>
<ExcludeAssets>
<PrivateAssets>
<AppendTargetFrameworkToOutputPath>

目前,我正在構建 windows 但將來也會有一些 linux 機器必須構建解決方案,所以我需要一種適用於所有環境的方法。

有可能做到嗎?

加載程序集不是問題,我已經修改了 AssemblyLoadContext.Default.Resolving,如果我從 output 目錄中手動刪除 dll,應用程序可以工作,但我需要比構建后刪除腳本更“優雅”的東西。

當您提到“構建后刪除腳本”時,是否暗示使用構建后事件調用了一個? 我意識到這可能與您的想法不完全一樣,因為它實際上是一個腳本,每次構建項目后都會調用它。

盡管如此,它與手動運行腳本並不完全相同,所以如果您在尋找更好的選項時遇到困難,這可能是一種替代方法嗎?

打開項目的屬性,然后查找:
您可能還想查看構建事件的文檔

在此處輸入圖像描述

暫無
暫無

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

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