VS2019创建.Net 5.0 WPF应用安装程序提示GetDirectoryName未找到如何解决
MSB4186错误解决方案
以下是经过验证的可解决该报错的操作步骤:
方案1:清理项目路径特殊字符
报错原因是MSBuild解析带特殊字符的路径时参数传递失败,你当前的项目路径包含空格、URL编码符%28/%29、逗号等不兼容字符:
- 将整个项目文件夹移动到无特殊符号、无空格的纯英文路径下,例如
C:\Dev\CBREApp\ - 重新打开解决方案后再次尝试打包。
方案2:更新VS2019打包相关组件
该问题是旧版Desktop Bridge打包组件的已知BUG,可通过组件更新修复:
- 打开Visual Studio Installer,选择对应VS2019实例的「修改」选项
- 切换到「单个组件」标签,勾选如下组件:
- MSVC v142 - VS 2019 C++ x64/x86 生成工具(最新版)
- Windows 10 SDK (10.0.19041.0 及以上版本)
- 等待组件安装完成后重启VS,重新尝试打包。
方案3:手动修正目标文件(临时修复)
前两个方案不生效时可直接修改报错的目标文件,修改前建议先备份原文件:
- 用管理员权限打开文本编辑器,访问路径:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\DesktopBridge\Microsoft.DesktopBridge.targets - 定位到602行,将原有
[System.IO.Path]::GetDirectoryName($(ProjectPath))的调用,修改为$([System.IO.Path]::GetDirectoryName('$(ProjectPath)')) - 保存文件后重启VS再次尝试打包。
方案4:替换打包方案
.NET 5+不再完全兼容传统的Visual Studio Installer项目打包,可改用官方推荐的打包方式:
- 右键WPF项目选择「发布」,发布目标选择「文件夹」,按需选择自包含或框架依赖模式完成发布
- 如需生成安装程序,可使用NSIS、Inno Setup等工具将发布后的文件打包为安装包。
内容的提问来源于stack exchange,提问作者Charles Jennings
相关产品推荐
相关产品推荐

