Visual Studio 2017中CommandLineParser项目NuGet构建错误解决咨询
解答:CommandLineParser仓库构建的NuGet错误及修复方案
第一个错误:依赖项"CommandLine": { "target": "project" }版本规范无效
这个错误的核心原因是NuGet无法识别你项目里配置的CommandLine依赖版本格式。"target": "project"这种写法不是NuGet支持的版本号、版本范围或者合法的依赖引用方式——通常这种写法可能是原仓库作者用了本地项目依赖(直接引用解决方案里的另一个项目),但你的环境里没有正确识别这种引用关系,或者配置文件被误写成了NuGet依赖格式。
修复步骤:
- 打开你的项目文件(
.csproj),找到关于CommandLine的依赖配置:- 如果是
PackageReference节点,把错误的版本配置替换成合法的NuGet版本,比如指定具体版本:<PackageReference Include="CommandLine" Version="2.9.1" />,或者用范围<PackageReference Include="CommandLine" Version="[2.0, 3.0)" />。 - 如果是
packages.config文件,找到对应的<package>节点,修改version属性为合法值,比如<package id="CommandLine" version="2.9.1" targetFramework="uap10.0" />。
- 如果是
- 如果你确实需要引用仓库里的本地CommandLine项目(而不是NuGet包),那应该把NuGet依赖改成项目引用:右键项目→添加→引用→选择解决方案里的CommandLine项目。
第二个错误:Error occurred while restoring NuGet packages: Invalid restore input. UAP projects must contain exactly one target framework.
这个错误是UAP项目的硬性要求导致的——UWP(UAP)项目只能指定一个目标框架版本,但你的项目要么配置了多个框架,要么因为第一个依赖错误导致NuGet还原时框架识别混乱。
修复步骤:
- 打开项目的
.csproj文件,检查框架配置:- 如果看到
<TargetFrameworks>(复数)节点,把它改成<TargetFramework>(单数),只保留一个UAP框架版本,比如<TargetFramework>uap10.0.17763</TargetFramework>。
- 如果看到
- 也可以通过Visual Studio的项目属性修改:右键项目→属性→应用程序→目标版本,确保只选择了一个UAP版本,没有多选。
- 最后清理重建:右键项目→清理,删除项目文件夹下的
obj和bin目录,然后重新打开NuGet包管理器→还原所有包,再尝试构建。
内容的提问来源于stack exchange,提问作者user1443098
相关产品推荐
相关产品推荐

