例如,如果我只想要.Net Platform Standard的软件包.现在我正在寻找一个包,尝试安装它,得到:
error: Package <name> is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0).
Package <name> supports: portable-win81+wpa81 (.NETPortable,Version=v0.0,Profile=Profile32)
error: One or more packages are incompatible with .NETCoreApp,Version=v1.0.
Run Code Online (Sandbox Code Playgroud)
我必须重新开始 我看到了支持的平台.这意味着,信息就在那里.
编辑:如果我可以在Visual Studio中设置过滤器会更好,但我没有看到,我还没有在nuget.org中看到它.所以问题是:有没有办法只为特定平台获取包(这意味着通过平台搜索过滤器).我感兴趣的是.Net Platform Standard.我希望,你在这里看不到任何模糊的东西.
<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="2.0" m:MaxDataServiceVersion="2.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2006/04/edm" Namespace="NuGetGallery.OData">
<EntityType Name="V2FeedPackage" m:HasStream="true">...</EntityType>
</Schema>
<Schema xmlns="http://schemas.microsoft.com/ado/2006/04/edm" Namespace="NuGetGallery">
<EntityContainer Name="V2FeedContext" m:IsDefaultEntityContainer="true">
<EntitySet Name="Packages" EntityType="NuGetGallery.OData.V2FeedPackage"/>
<FunctionImport Name="Search" ReturnType="Collection(NuGetGallery.OData.V2FeedPackage)" EntitySet="Packages">
<Parameter Name="searchTerm" Type="Edm.String" FixedLength="false" Unicode="false"/>
<Parameter Name="targetFramework" Type="Edm.String" FixedLength="false" Unicode="false"/>
<Parameter Name="includePrerelease" Type="Edm.Boolean" Nullable="false"/>
</FunctionImport> …
Run Code Online (Sandbox Code Playgroud) 我有一个Excel插件,它使用Azure AD(ADAL)进行身份验证.我已经制作了应用程序的第二个副本以及Azure AD中所需的更改.所有用户都可以使用第一个应用.第二个应用程序我是唯一可以登录的人.他们拥有与第一个应用程序相同的权限.Azure在登录时提供的错误是:
错误代码:90094
错误原因:其他
我找不到此错误的信息.返回给用户的是"管理员必须为此应用程序授予权限".但是给予了特权.像在第一个应用程序中一样.
你有这个错误代码的任何信息吗?
PS我发现,这与应用程序所需的权限相关联.如果我添加一个用户,即Azure AD中的全局管理员,登录后会出现一个窗口"应用程序需要权限:...(接受,取消)"之后,他可以使用该应用程序,即使他是改为普通用户.如果用户是普通的Azure AD用户,则不会显示此窗口,并且他会被错误90094拒绝.对于有限管理员的用户也会发生同样的情况,并且对于他拥有的管理员角色无关紧要.
PS 2
根据我的支持请求,Microsoft支持人员没有告诉我这个错误意味着什么("这是一个自定义应用程序,并且没有关于此错误的信息.如果这是一个企业应用程序,将会有信息").
删除应用程序注册并再次进行后,不再存在这样的问题.我无法重现它(我努力尝试:)).如果你给我一个答案,我无法证明这一点.所以你可以把这个问题视为已关闭.
是否可以在新的.Net Core(更好的.Net标准平台)中运行时编译和运行c#代码?我见过一些例子(.Net Framework),但是使用过的NuGet包
与netcoreapp1.0不兼容(.NETCoreApp,Version = v1.0)
我正在寻找一种方法将大的3D稀疏数组结构保存到内存中而不会浪费大量内存.在这里,我做了一个longs数组的实验:
using System;
using System.Diagnostics;
using System.Runtime;
namespace ConsoleApp4
{
public class Program
{
static Process proc = Process.GetCurrentProcess();
const int MB = 1024 * 1024;
const int IMAX = 5;
const int JMAX = 100000000;
public static void ShowTextWithMemAlloc(string text)
{
proc.Refresh();
Console.WriteLine($"{text,-30}WS64:{proc.WorkingSet64/MB,5}MB PMS64:{proc.PrivateMemorySize64/MB,5}MB");
Console.ReadKey();
}
public static void Main(string[] args)
{
Console.Write(" ");
ShowTextWithMemAlloc("Start.");
long[] lArray = new long[IMAX * JMAX];
long[] l1Array = new long[IMAX * JMAX];
long[] l2Array = new long[IMAX * JMAX];
long[] l3Array = …
Run Code Online (Sandbox Code Playgroud) 我正在接受这个命令
Dictionary<UInt64, int> myIntDict = new Dictionary<UInt64, int>(89478458);
Run Code Online (Sandbox Code Playgroud)
这个错误:
System.OutOfMemoryException was unhandled HResult=-2147024882
Message=Array dimensions exceeded supported range.
Source=mscorlib
StackTrace:
at System.Collections.Generic.Dictionary`2.Initialize(Int32 capacity)
at System.Collections.Generic.Dictionary`2..ctor(Int32 capacity, IEqualityComparer`1 comparer)
Run Code Online (Sandbox Code Playgroud)
在89478457上没有错误.以下是Dictionary.cs中Initialize的来源:
private void Initialize(int capacity)
{
int size = HashHelpers.GetPrime(capacity);
...
entries = new Entry[size];
...
}
Run Code Online (Sandbox Code Playgroud)
当我重现它时,错误发生在数组创建上.在这种情况下,条目是一个结构,大小为24.当我们得到max int32(0x80000000-1)并除以24 = 89478485时,这个数字在素数89478457和89478503之间.
这是否意味着,结构数组不能像maxInt32/sizeOfThisStruct那样大?
编辑:
是.我实际上超过2 GB.当字典创建struct Entry的内部数组时,会发生这种情况,其中存储了(键,值)对.在我的例子中,sizeof(Entry)是24个字节,并且值类型是内联分配的.
解决方案是使用gcAllowVeryLargeObjects 标志(谢谢Evk).实际上在.net核心中,标志是环境变量 COMPlus_gcAllowVeryLargeObjects(谢谢svick).
是的,狗仔队是对的.我要思考,怎么不浪费记忆.谢谢你们.