升级引用项目至.Net Standard 2.0后无法编译UWP类库
解决UWP项目引用.NET Standard 2.0类库时的DateTime编译错误
我来帮你搞定这个编译错误,这是升级.NET Standard和UWP SDK后很常见的配置冲突问题,试试下面几个针对性方案:
1. 检查并更新UWP项目的NuGet依赖
右键你的UWP项目,选择「管理NuGet程序包」,找到Microsoft.NETCore.UniversalWindowsPlatform包:
- 确保这个包的版本至少是6.0.10(该版本开始全面支持.NET Standard 2.0),如果当前版本偏低,直接升级到兼容SDK 16299的最新稳定版。
- 安装完成后重启VS,再尝试重新编译。
2. 手动修正UWP项目的.csproj配置
如果NuGet升级没解决问题,直接编辑UWP项目的.csproj文件,添加或修改以下配置:
<PropertyGroup> <!-- 确认目标SDK版本为16299 --> <TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion> <TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion> <!-- 明确指定.NET Standard的引用版本 --> <NetStandardImplicitPackageVersion>2.0.0</NetStandardImplicitPackageVersion> </PropertyGroup>
这个配置会强制UWP项目关联正确的.NET Standard 2.0程序集,避免类型引用冲突。
3. 显式添加netstandard程序集引用
如果上面的步骤还是无效,直接在.csproj里添加对netstandard.dll的显式引用:
<ItemGroup> <Reference Include="netstandard"> <!-- 替换成你本地netstandard.dll的实际路径,通常在.NET Core SDK安装目录下 --> <HintPath>C:\Program Files\dotnet\shared\Microsoft.NETCore.App\2.0.0\netstandard.dll</HintPath> <Private>True</Private> </Reference> </ItemGroup>
注意:根据你本地的.NET Core SDK安装路径调整HintPath的值。
4. 清理重建解决方案
最后别忘了执行这步操作,彻底清除旧的编译缓存:
- 右键解决方案,选择「清理解决方案」
- 删除UWP项目和.NET Standard类库的
bin、obj文件夹 - 右键解决方案,选择「重新生成解决方案」
错误原因说明
当你把.NET Standard类库升级到2.0,同时UWP项目切换到SDK 16299时,项目可能没有自动正确关联.NET Standard 2.0的程序集。DateTime类型在.NET Standard 2.0中的定义和旧版本的引用路径存在冲突,导致编译器无法找到正确的类型定义,所以需要通过配置明确指定引用的netstandard版本。
内容的提问来源于stack exchange,提问作者Dishant
相关产品推荐
相关产品推荐

