相关疑难解决方法(0)

'无法加载文件或程序集'netstandard,Version = 2.0.0.0,...'.不应加载引用程序集以执行

目标: 从.NET 4.7控制台应用程序,使用Assembly.GetType()的反射,我尝试从程序集X中提取netstandard 2.0类的类型.然后我想用Activator.CreateInstance()创建此类型的实例.

我想要做的是: 但是,这个程序集X依赖于netstandard 2.0.为了能够获取Type,必须将netstandard依赖项加载到AppDomain中.这就是为什么当AppDomain通过AssemblyResolve事件请求netstandard程序集时,我只需加载这样的dll:

var netStandardDllPath = @"C:\Users\xxx\.nuget\packages\NETStandard.Library.2.0.0-preview1-25301-01\build\netstandard2.0\ref\netstandard.dll";

return Assembly.LoadFrom(netStandardDllPath);
Run Code Online (Sandbox Code Playgroud)

哪个投掷:

System.BadImageFormatException:'无法加载文件或程序集'文件:/// C:\ Users\vincent.lerouvillois.nuget\packages\NETStandard.Library.2.0.0-preview1-25301-01\build \netstandard2.0\ref \netstandard.dll'或其依赖项之一.不应加载引用程序集以执行.它们只能在Reflection-only loader上下文中加载.(HRESULT异常:0x80131058)'

内部异常:BadImageFormatException:无法加载引用程序集以执行.

我所知道的: 我知道他们希望我们使用Assembly.ReflectionOnlyLoadFrom加载DLL.但这样做会阻止我使用Activator.CreateInstance()实现类型.请参阅Microsoft官方帖子

另外,我尝试在我的控制台应用程序中引用Nuget软件包NETStandard.Library 2.0.0-preview1-25301-01和NETStandard.Library.NETFramework 2.0.0-preview1-25305-02,这样它就会引用netstandard 2.0库,但是它没有改变任何东西.

问题: 有没有人知道是否有正确的方法来加载该DLL而没有错误,或者可能是否是一个错误,或者?或者为什么这种DLL无法加载执行?

.net c# dll .net-assembly .net-standard

18
推荐指数
4
解决办法
3万
查看次数

将pdb嵌入到程序集中

我希望我的应用程序可以作为单个.exe文件分发,但我希望能够获得包含源代码行号的错误报告(exception.ToString()当发生未处理的异常时,应用程序只发送带有一些附加信息的电子邮件).

有没有办法将.pdb嵌入程序集中?

.net deployment pdb-files

13
推荐指数
2
解决办法
1957
查看次数

"动态加载可移植类库时无法加载文件或程序集'System.Core,Version = 2.0.5.0,..."异常

首先,我要强调,这是稍微比一个不同的问题,这个线程.此外,安装KB2468871没有帮助.

我试图尽可能地简化这个问题.一般来说,它是关于使用Assembly.LoadFile(...)在Desktop应用程序中加载PCL程序集.

假设有一个.NET 4.0控制台应用程序(称为"C").它引用了.NET 4.0程序集(称为"N4")和PCL程序集(称为"PCL").

N4看起来像这样:

using System.Linq;

namespace N4
{
    public class ClassInN4
    {
        public static string Greet()
        {
            return new string(
                "hello from N4"
                .ToCharArray()
                .Select(char.ToUpper)
                .ToArray()
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

PCL看起来像这样:

using System.Linq;

namespace PCL
{
    public class ClassInPCL
    {
        public static string Greet()
        {
            return new string(
                "hello from pcl"
                .ToCharArray()
                .Select(char.ToUpper)
                .ToArray()
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和C看起来像这样:

using System;
using System.IO;
using System.Reflection;
using N4;
using PCL;

namespace C
{
    internal …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection .net-assembly

12
推荐指数
1
解决办法
2万
查看次数

VS2015 C#interactive:错误CS7069:引用类型'Object'声称它是在'System.Runtime'中定义的,但是找不到它

我刚刚更新到VS2015 Update 2,并开始使用C#交互式窗口.我想在我的一个.NET 4.0目标库项目中的静态类中使用静态方法,所以我在解决方案资源管理器中右键单击该项目,然后选中Initialize Interactive with Project.交互式窗口中的输出如下所示(为简洁起见,我用'..'替换了一些完整路径):

#reset
Resetting execution engine.
Loading context from 'CSharpInteractive.rsp'.
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll"
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll"
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.IO.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Net.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.Runtime.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.Threading.Tasks.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.Linq.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.DataSetExtensions.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Microsoft.CSharp.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.dll"
#r "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.dll" …
Run Code Online (Sandbox Code Playgroud)

.net c# read-eval-print-loop visual-studio-2015 c#-interactive

6
推荐指数
1
解决办法
4484
查看次数