我的代码:
Keys = new Dictionary<string, string>();
Keys.Add("?????_0", "raid_0");
Run Code Online (Sandbox Code Playgroud)
当我得到时Keys.ElementAt(0)
,我有这个:{[Íàáåã_0, raid_0]}
.当然,当我运行程序时,key = "?????_0"
没有定义,程序崩溃了System.Collections.Generic.KeyNotFoundException
当我使用Windows 8.1 + Visual Studio 2013 + net 3.5时,此代码工作正常
我该如何解决?
c# dictionary character-encoding visual-studio-2015 .net-4.6
我有一个针对.NET 4.6和通用Windows平台的可移植类库项目.这个类库只包含一个类,其构造函数中包含以下代码行:
Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()));
Run Code Online (Sandbox Code Playgroud)
现在,我在同一解决方案中创建一个新的.NET 4.6控制台应用程序项目,并向可移植类库添加项目引用.调用包含上述代码行的方法会在运行时导致以下异常:
Could not load file or assembly 'System.IO.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?没有编译时错误或警告.
似乎System.IO.FileSystem是一个通过NuGet提供的库,作为Microsoft.NETCore mega-package的一部分.好吧,也许我需要将这个包明确地添加到任何使用我的可移植类库的项目中.我试图这样做.
Could not install package 'Microsoft.NETCore.Platforms 1.0.0'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.6', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
Run Code Online (Sandbox Code Playgroud)
这种方法没有运气.
虽然网上没有明确的信息,但我读了一些关于基于NuGet线束或构建系统的新project.json的花絮.为了实验,我在控制台应用程序项目中创建了以下project.json文件:
{ …
Run Code Online (Sandbox Code Playgroud) nuget portable-class-library visual-studio-2015 .net-4.6 project.json
.net 4.6框架是在适当的升级,然后.net框架4.5如何在vs2015中运行?我只看到一个文件夹v4.0.30319.dll是如何存储的?
我有一个使用winforms和WPF的C#程序,我很难让它在高DPI环境中工作.目前,如果我从解决方案中删除所有WPF项目并运行它,它将可以很好地扩展,但是一旦我添加任何wpf(功能必需),扩展失败并且UI变得不可用.
这似乎与之前的SO问题完全相同:混合WinForms和WPF应用程序中的.Net 3.5中的DPI缩放以及使用DPI正确扩展WinForms的问题
我按照有关这些问题的建议,尝试添加清单文件和提供的dpi识别代码.
我还将项目升级到.net framework 4.6.1(从4.0开始)并包含了app.config设置: <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
这确实影响了程序的主shell(因此,不是在一个小窗口中加载所有控件被压缩,主程序窗口打开最大化并显示正常)但是,当我从主窗口输入任何winforms子窗体或插件时,缩放失败.
当我输入任何WPF子窗体或插件,或返回到主屏幕时,这些渲染正确.只有winforms功能无法正确扩展.
有没有人对如何让混合winforms/WPF项目在高DPI中正确扩展有任何想法?
提前致谢
根据TLS 协议编程的.net 指南,当您的项目面向 .net 4.6 时,建议通过 appcontext 开关配置安全性。当在 app.config 中为控制台应用程序添加 appcontext 时,这种方式有效。但是,在网站项目的 web.config 中添加 appconext 开关时它不起作用。
这是我添加的配置。
<runtime>
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=false;Switch.System.Net.DontEnableSystemDefaultTlsVersions=false"/>
</runtime>
Run Code Online (Sandbox Code Playgroud) 我想在我现在正在使用的一些遗留代码上使用 BenchmarkDotNet。它是用 C# Net462 编写的。这是一个庞大、古老且复杂的系统,我想对某些特定类中的一些方法进行基准测试。这些类使用依赖注入,我不确定如何做到这一点。到目前为止我看到的所有示例都没有使用任何依赖注入。
有人有什么想法或例子我可以看一下吗?
非常感谢。
我有以下枚举类型:
public enum EnumType
{
E1,
E2
}
Run Code Online (Sandbox Code Playgroud)
用于以下类:
public class X
{
public virtual int? Id { get; set; }
public virtual EnumType EnumProperty { get; set; }
public virtual string S { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想使用NHibernate在数据库中保留此类实例.为避免编写样板代码,我试图使用自动映射功能,如下所示:
private ISessionFactory CreateSessionFactory()
{
var mappings = AutoMap
.AssemblyOf<Domain.X>(new MyAutoMappingConfiguration());
this.NHibernateConfiguration = Fluently
.Configure()
.Database(FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2012.ConnectionString(
b => b.FromConnectionStringWithKey("x")))
.Mappings(m => m.AutoMappings.Add(mappings))
.BuildConfiguration();
return this.NHibernateConfiguration.BuildSessionFactory();
}
Run Code Online (Sandbox Code Playgroud)
这里MyAutoMappingConfiguration
看起来是这样的:
public class MyAutoMappingConfiguration: FluentNHibernate.Automapping.DefaultAutomappingConfiguration
{
public override bool ShouldMap(Type type)
{
return type.Namespace …
Run Code Online (Sandbox Code Playgroud) c# nhibernate fluent-nhibernate fluent-nhibernate-mapping .net-4.6
根据针对.NET和API的Azure SDK的支持和退休信息,SDK 2.6引入了对.NET 4.6的支持。尽管姐妹文章“ 在云服务角色上安装.NET”包括显式安装.NET 4.6.2的安装脚本,暗示Web /工作者角色支持该脚本,但列出的SDK均未明确提及4.6.2 。
当我尝试将解决方案从.NET 4.5.1(使用Azure SDK 2.8)升级到.NET 4.6.2时,我还修改了RoleProperties.txt
文件,其中包括以下几行:
TargetFrameWorkVersion=v4.5.1
RoleTargetFramework=v4.5.1
至
TargetFrameWorkVersion=v4.6.2
RoleTargetFramework=v4.6.2
在调用后导致以下错误cspack.exe
:
不支持的.Net Framework v4.6.2
我尝试将更4.6.2
改为简单4.6
,但同样失败。
所以我的问题是:
cspack.exe
?4.6*
或是否可以安全地保留它们,4.5.1
因为您cspack.exe
不会抱怨?对于我们的新项目(使用Visual Studio 2017和.net Framework 4.6),已决定使用Enterprise Library 6.0进行日志记录,异常处理和数据库访问.我在互联网上有很多关于如何使用它的资源/材料.我的问题是,
请帮我找出并决定.
我有一个(ReadOnly)Span<byte>
要从中解码字符串的对象。
仅在.NET Core 2.1中,我有了新的重载,可以从其中解码一个字符串,而无需复制字节:
Encoding.GetString(ReadOnlySpan<byte> bytes);
Run Code Online (Sandbox Code Playgroud)
在.NET Standard 2.0和.NET 4.6(我也想支持)中,我只有经典的重载:
Encoding.GetString(byte[] bytes);
Encoding.GetString(byte* bytes, int byteCount);
Run Code Online (Sandbox Code Playgroud)
第一个需要将字节的副本复制到我要避免的数组中。
第二个需要一个字节指针,所以我考虑从我的跨度中获取一个,例如
Encoding.GetString(Unsafe.GetPointer<byte>(span.Slice(100)))
Run Code Online (Sandbox Code Playgroud)
...但是我没有找到一个实际的方法。我试过了void* Unsafe.AsPointer<T>(ref T value)
,但是我不能传递一个范围,也没有找到另一个处理指针(和范围)的方法。
这有可能吗?如果是,怎么办?
.net-4.6 ×10
c# ×4
.net ×1
.net-4.5 ×1
asp.net ×1
asp.net-4.5 ×1
azure ×1
cspack ×1
dictionary ×1
highdpi ×1
nhibernate ×1
nuget ×1
project.json ×1
tls1.2 ×1
winforms ×1
wpf ×1