VS2013编译CoApp库提示找不到CopyItemCommand命名空间如何解决
编译错误解决方案
错误原因
该问题是PowerShell程序集版本与项目目标框架不匹配导致的:你当前引用的GAC目录下Microsoft.PowerShell.Commands.Management v3.0.0.0是对应PowerShell 4.0的版本,适配.NET Framework 4.5及以上,而CoApp作为2013年的旧库,默认目标框架是.NET Framework 4.0,版本不匹配导致编译器无法识别CopyItemCommand类,而智能感知因为能扫描到GAC的全局类型所以会显示正确信息、仅标注绿色警告。
可落地解决步骤
步骤1:调整项目目标框架
打开报错项目的属性页,将「目标框架」修改为.NET Framework 4.0(不要选4.5/4.5.1等高版本),保存后尝试重新生成,大部分情况这一步即可解决问题。步骤2:替换为官方参考程序集
不要使用系统GAC中的程序集,改用官方发布的适配包:- 右键项目选择「管理NuGet程序包」,卸载现有的
System.Management.Automation、Microsoft.PowerShell.Commands.Management引用 - 搜索安装
Microsoft.PowerShell.3.ReferenceAssemblies包,版本选择1.0.0,该包会自动添加适配PowerShell 3.0的所有依赖引用,不需要手动指定路径
- 右键项目选择「管理NuGet程序包」,卸载现有的
步骤3:校验引用属性
如果仍报错,右键项目引用中的Microsoft.PowerShell.Commands.Management,打开属性页确认三个配置:特定版本设置为True复制本地设置为True- 引用路径指向NuGet包目录下的dll,而非系统GAC路径
临时兼容方案
如果上述方案都无法生效,可以直接修改代码做最小改动兼容:将CopyItemExCmdlet的父类从CopyItemCommand替换为PSCmdlet,非核心逻辑的base.xxx()调用可以直接注释,不会影响其他模块的编译。
内容的提问来源于stack exchange,提问作者edwin。
相关产品推荐
相关产品推荐

