我正在运行 VS 2017 RC4。
我在我的 .NET Core 应用程序中添加了一个对我的 .NET 4.5 dll 的引用,它编译了。当在运行时调用引用 dll 的行时,我得到:
System.IO.FileNotFoundException: 'Could not load file or assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.'
此图显示要使用 4.5 引用,我需要使用 netstandard 1.1。 https://msdnshared.blob.core.windows.net/media/2016/07/172.png
假设这是我需要的,我该如何在我的 .csproj 中引用它?我只能找到有关何时使用 project.json 的旧文档。
我尝试添加以下内容,但没有帮助:
<NetStandardImplicitPackageVersion>1.1</NetStandardImplicitPackageVersion>
此外,我还需要补充:
<RuntimeFrameworkVersion>1.0.3</RuntimeFrameworkVersion>
或者我得到 FileNotFoundException:无法加载文件或程序集。系统找不到指定的文件。
这是为什么?
以下是我的 .csproj 的相关部分:
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
<RuntimeFrameworkVersion>1.0.3</RuntimeFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="My4.5dll">
<HintPath>Dlls\My4.5dll.dll</HintPath>
</Reference>
</ItemGroup>
最佳答案
您不能(安全地)将 .NET Framework 4.5 库加载到 .NET Core 中,因为它可能使用 .NET Core 中不可用的 API。
只有当您的库面向 portable-net45+win8(.NET Framework 4.5 和 Windows 8 Portable Class Profile 或更高版本)时,它才可以与 .NET Core 一起使用。因为这个特定的 PCL 配置文件限制了与(以前称为 WinRT)System.Runtime 兼容的 API,这是 .NET Core 的基础。
有关兼容 PCL 配置文件的列表,请参阅 this list (底部的 PCL 兼容性)
如果您要引用的程序集不支持 netstandard1.x 或任何受支持的配置文件,您必须以 .NET Framework 4.5 而不是 .NET Core 为目标.
在你的csproj中
<TargetFramework>net45</TargetFramework>
...
<ItemGroup>
<PackageReference Include="Net45DependencyHere" Version="4.5.0" />
或者如果你是多目标
<TargetFrameworks>net45;netcoreapp1.1</TargetFrameworks>
...
<ItemGroup>
<PackageReference Condition="'$(TargetFramework)' == 'net45' Include="Net45DependencyHere" Version="4.5.0" />
<PackageReference Condition="'$(TargetFramework)' == 'netcoreapp1.1' Include="NetCoreReplacementLibrary" Version="1.1.0" />
您无法在 .NET Core 项目中自动神奇地使用任何 .NET Framework 4.5 库。只有 PCL 和 netstandard1.x 的。
为了完整起见:
如果您确定您的类库/包以兼容的 PCL 为目标,您也可以让 nuget 恢复此包,即使它们不以 netstandard1.x。
<PropertyGroup>
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
</PropertyGroup>
从不,我再说一遍,从不除了兼容的 PCL 库之外,别把任何东西放在那里。 永远不要将net45 放在这里。这只会强制 NuGet 下载并安装此程序包,但不会使其正常工作并在运行时崩溃并出现与上述类似的错误!
它只是强制 nuget 安装知道在过渡期间与 .NET Core 一起工作的包,直到大多数包都以 netstandard1.x 为目标!
关于c# - 在 .NET Core 1.1 csproj 中引用 .NET 4.5 dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42349605/
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我想让一个yaml对象引用另一个,如下所示:intro:"Hello,dearuser."registration:$introThanksforregistering!new_message:$introYouhaveanewmessage!上面的语法只是它如何工作的一个例子(这也是它在thiscpanmodule中的工作方式。)我正在使用标准的rubyyaml解析器。这可能吗? 最佳答案 一些yaml对象确实引用了其他对象:irb>require'yaml'#=>trueirb>str="hello"#=>"hello"ir
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth
我正在尝试将一个资源属性的默认值设置为另一个属性的值。我正在为我正在构建的tomcat说明书定义一个资源,其中包含以下定义。我想要可以独立设置的“名称”和“服务名称”属性。当未设置服务名称时,我希望它默认为为“名称”提供的任何内容。以下不符合我的预期:attribute:name,:kind_of=>String,:required=>true,:name_attribute=>trueattribute:service_name,:kind_of=>String,:default=>:name注意第二行末尾的“:default=>:name”。当我在Recipe的新block中引用我