WPF的坑:NuGet引入源代码包导致编译失败
当目标项目为WPF项目时,使用NuGet导入源代码包出现的问题。
起因
某天,为了更方便管理引用的函数库,使用NuGet包管理器导入『GDAL』库(包含4个dll文件、1个cs文件和1个vb文件)。在程序的主函数中,写入如下代码配置GDAL库,之后就可以正常使用GDAL库。
1 | GdalConfiguration.ConfigureGdal(); |
添加以下命令空间。
1 | using OSGeo.GDAL; |
测试GDAL库的代码如下。
1 | // 读取栅格影像,本文使用 SRTM 30M DEM数据 |
控制台项目
编译生成并运行,可以看到没有任何错误。
WinForm项目
编译生成并运行,可以看到没有任何错误。
WPF项目
编译生成并运行,可以看到生成的项目并不是原始的项目,新的临时项目命名特征可总结为『{项目名}+{随机字符}+wpftmp.csproj』。同时,会出现找不到『GdalConfiguration』的错误。
错误分析
根据吕毅在其博客文章中的分析,可以知道这是WPF项目在编译过程中产生的问题。
解决方案
- 继续使用WPF项目的前提下,则放弃使用NuGet包管理器自动导入GDAL库,改为手动导入。
- 继续使用NuGet包管理器的前提下,则放弃使用WPF项目,改为使用WinForm项目。