C# 尝试读取或写入受保护的内存。这通常指示其他内容以毁坏

C# 尝试读取或写入受保护的内存。这通常指示其他内容以损坏
我这里调用了一个开源库gdal_csharp.dll, v2.0.50727,在.net framework v2.0 和.net framework v4.0项目中将其引用,创建一个类用以调用代码如下:
    public string GetProject(string filePath)
        {
            Gdal.AllRegister();
            Dataset ds;
            try
            {
                string a = "";
                ds = Gdal.OpenShared(filePath, Access.GA_ReadOnly);
              a = ds.GetProjection();
                return a;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
这在VS2010运行编译时没有任何错误,都可以调用出来信息。但是直接点击Debug目录下.exe文件时,报错。错误如标题。特别强调一下上面这段代码在项目.net framework2.0下,调用他的在.net framework4.0下。。。
求大神帮忙啊,搞了好久!!!!
------解决方案--------------------
引用:
Quote: 引用:

既然开源,在.net 4.0下编译一次。

大神你说的是什么意思,那个已经是个dll了 在项目里面我就直接引用了,怎么编译? 
并且在vs2010下运行 没有问题,但要是直接点击.exe马上就出现如题的问题了
很郁闷

不要引用那个现成的,用.net 2.0编译的dll,而是拿着源代码,自己用VS2010编译一个4.0版本的dll
------解决方案--------------------
试着重新清理下项目然后再重新生成看下,这样做的目的是确保你点击的exe文件就是你在vs下面运行的时候生成的exe文件
------解决方案--------------------
应该是文件正在使用时,你打开它,你访问方式变一下,能不能修改变共享方式读取(有没有共享方式),或判断一下文件有没有正在使用中     ds = Gdal.OpenShared(filePath, Access.GA_ReadOnly);