标签: .net-4.6

错误字符串编码(Windows 10 + Visual Studio 2015 + Net 4.6)

我的代码:

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

6
推荐指数
2
解决办法
5160
查看次数

如何从.NET 4.6控制台应用程序引用UWP + NET46可移植库?

我有一个针对.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)

我在这做错了什么?没有编译时错误或警告.

我尝试过的事情:手动添加缺少的(?)NuGet包

似乎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)

这种方法没有运气.

我尝试过的事情:创建一个project.json文件

虽然网上没有明确的信息,但我读了一些关于基于NuGet线束或构建系统的新project.json的花絮.为了实验,我在控制台应用程序项目中创建了以下project.json文件:

{ …
Run Code Online (Sandbox Code Playgroud)

nuget portable-class-library visual-studio-2015 .net-4.6 project.json

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

.net 4.6框架是在适当的升级,然后.net框架4.5如何在vs2015中运行?

.net 4.6框架是在适当的升级,然后.net框架4.5如何在vs2015中运行?我只看到一个文件夹v4.0.30319.dll是如何存储的?

.net asp.net .net-4.5 asp.net-4.5 .net-4.6

6
推荐指数
2
解决办法
1870
查看次数

混合WPF和winforms项目DPI意识

我有一个使用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中正确扩展有任何想法?

提前致谢

c# wpf highdpi winforms .net-4.6

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

无法通过在 web.config 中添加 appcontext 设置来将应用设置为使用系统默认 TLS 版本

根据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)

network-programming .net-4.6 tls1.2

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

如何在 BenchmarkDotNet 中使用 DependencyInjection?

我想在我现在正在使用的一些遗留代码上使用 BenchmarkDotNet。它是用 C# Net462 编写的。这是一个庞大、古老且复杂的系统,我想对某些特定类中的一些方法进行基准测试。这些类使用依赖注入,我不确定如何做到这一点。到目前为止我看到的所有示例都没有使用任何依赖注入。

有人有什么想法或例子我可以看一下吗?

非常感谢。

dependency-injection .net-4.6 benchmarkdotnet

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

为什么Fluent的NHibernate中的AutoMapping会忽略枚举类型?

我有以下枚举类型:

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

5
推荐指数
1
解决办法
647
查看次数

cspack.exe是否支持.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,但同样失败。

所以我的问题是:

  1. 您如何正确使用.NET 4.6.2 cspack.exe
  2. 是否有必要将这些属性设置为4.6*或是否可以安全地保留它们,4.5.1因为您cspack.exe不会抱怨?

azure azure-web-roles cspack .net-4.6

5
推荐指数
0
解决办法
393
查看次数

Visual Studio 2017的企业库6.0配置编辑器

对于我们的新项目(使用Visual Studio 2017和.net Framework 4.6),已决定使用Enterprise Library 6.0进行日志记录,异常处理和数据库访问.我在互联网上有很多关于如何使用它的资源/材料.我的问题是,

  1. 我找不到适用于Visual Studio 2017的任何Enterprise Library配置控制台.是否有适用于EL6.0的独立编辑器?
  2. 如果它可以在哪里下载?
  3. 如果没有可用的扩展名(对于vs2017)/独立编辑器,那么如何手动配置它?有哪些文件可以说清楚要设置的属性?
  4. EL6.0是否支持.net框架4.6并且工作完美无缺?

请帮我找出并决定.

enterprise-library .net-4.6 visual-studio-2017

5
推荐指数
0
解决办法
385
查看次数

我可以得到一个跨度的指针吗?

我有一个(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),但是我不能传递一个范围,也没有找到另一个处理指针(和范围)的方法。

这有可能吗?如果是,怎么办?

c# .net-4.6 .net-standard-2.0 .net-core-2.1

5
推荐指数
1
解决办法
1342
查看次数