Beh*_*ooz 5 c# .net-core gitlab-ci-runner
当尝试编译一个相当大的解决方案时,这种情况会随机发生,只有几十个 csprojs 引用无法复制的特定 dll。
<ItemGroup>
<Reference Include="SomeLabrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\..\..\lib\some-library.dll</HintPath>
</Reference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何告诉 dotnet 编译器不要复制这个库,或者复制一次,或者在复制之前比较它,或者不要在 Linux 系统中锁定文件?啊,理智,我想你。
抱歉,我还不能发表评论,所以我尝试回答。
几年前,我在一个大项目中也遇到了这个问题。我追踪到 VisualStudio 在编译时启动的特定进程,该进程阻止了 .dll。然而,这个过程似乎并不需要。因此,我在构建后添加了一个taskkill命令来杀死它。我不记得阻塞过程是什么。
不过,您可以像我那样做,并获取Process Explorer,它可以帮助您找到句柄。
当 Process Explorer 启动时,您可以按 CTRL+F 搜索句柄,您基本上只在那里输入您的 .dll 名称。如果任何进程有您的 dll 的文件句柄,它将显示在您的搜索中。当您收到“无法复制”错误时,您很有可能找到该进程,它会重试几秒钟。
如果您找到该进程,您也可以尝试在该上下文中进行搜索。也许现在有比使用 taskkill 更好的解决方案。
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |