如何解决MSBuild复制Chrome相关dll到bin目录不保留原有路径的问题
解决方案
问题原因
MSBuild 默认会自动扫描项目目录下所有 .dll 文件,将其识别为项目依赖的程序集,触发默认的根输出目录复制逻辑。你原来的 <None> 配置仅新增了复制到 chrome-win 目录的规则,没有屏蔽默认的程序集处理逻辑,因此会出现重复复制、发布路径错乱的问题。
修复步骤
- 删除你原有 csproj 中的
<None Update="chrome-win\**" ... />配置行 - 添加如下配置到 csproj 的
<Project>节点下:
<ItemGroup> <!-- 屏蔽Chrome目录下dll的默认程序集复制逻辑,避免复制到根输出目录 --> <ReferenceCopyLocalPaths Remove="chrome-win\**\*.dll" /> <ResolvedFileToPublish Remove="chrome-win\**\*.dll" /> <!-- 统一配置Chrome目录所有文件的复制规则 --> <Content Include="chrome-win\**" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="Always" LinkBase="chrome-win\" /> </ItemGroup>
验证操作
配置完成后,先完全清理项目的 bin、obj 目录,再重新执行编译、发布操作即可:
- 编译时所有 Chrome 相关文件都会输出到
bin\$(Configuration)\$(TargetFramework)\chrome-win\目录下,不会在根bin目录生成冗余dll - 发布时所有 Chrome 相关文件都会输出到发布目录的
chrome-win\子目录下,不会出现bin\chrome-win这种错误路径
内容的提问来源于stack exchange,提问作者imgen
相关产品推荐
相关产品推荐

