簡體   English   中英

“重試次數超過 10。失敗。” 因為 csproj 配置錯誤

[英]“Exceeded retry count of 10. Failed.” because of csproj misconfiguration

當嘗試編譯一個相當大的解決方案時,這種情況隨機發生,只有幾十個 csprojs 引用了無法復制的特定 dll。

<ItemGroup>
    <Reference Include="SomeLabrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
        <HintPath>..\..\..\lib\some-library.dll</HintPath>
    </Reference>
</ItemGroup>

我的問題是,我如何告訴 dotnet 編譯器不要復制這個庫,或者只復制一次,或者在復制之前比較它,或者不要在 Linux 系統中鎖定文件? 啊,理智,我想念你。

抱歉,我還不能發表評論,所以我嘗試回答。

幾年前,我在一個大項目中也遇到過這個問題。 我將其追蹤到 VisualStudio 在編譯期間啟動的特定進程,該進程阻止了.dll。 然而,這個過程似乎不是必需的。 因此,我在后期構建中添加了一個 taskkill 命令來殺死它。 我不記得阻塞過程是什么。

但是,您當時可以像我一樣做,並獲得Process Explorer ,它可以幫助您找到句柄。

當 Process Explorer 啟動時,您可以按 CTRL+F 搜索句柄,您基本上只在此處輸入 your.dll 名稱。 如果任何進程具有您的 dll 的文件句柄,它將顯示在您的搜索中。 當您收到“無法復制”錯誤時,您很有可能找到該過程,它正在重試幾秒鍾。

如果您找到該過程,您也可以嘗試在該上下文中進行搜索。 也許現在有比使用 taskkill 更好的解決方案。

找到了卷發。 這不是因為 csproj 或 sln 文件,甚至是庫文件。 行為不端的是 dotnet 目標配置publish 它是在我重組解決方案並將/bin/lib/src等添加到根目錄時添加的。 因為同時更改多個內容總是一個好主意。
從編譯器標志中刪除-publish解決了這個問題。
事實證明,一百萬開發人員在解決方案中沒有數百個項目的戰斗測試並沒有帶來一些錯誤:)

暫無
暫無

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

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