相关疑难解决方法(0)

没有OrderedDictionary的通用实现?

在.NET 3.5中似乎没有OrderedDictionary(在System.Collections.Specialized命名空间中)的通用实现.有没有我错过的?

我发现那里的实现提供了功能,但想知道是否/为什么没有开箱即用的通用实现,如果有人知道它是否是.NET 4.0中的东西?

.net c# generics ordereddictionary .net-4.0

131
推荐指数
10
解决办法
4万
查看次数

Razor视图中的字符串插值?

这支持吗?

如果是这样,是否有一些技巧可以启用它?我假设Razor没有使用足够新的编译器......?VS2015 IDE似乎很好用,但在运行时我得到了

CS1056:意外字符'$'

c# asp.net-mvc razor c#-6.0

89
推荐指数
2
解决办法
3万
查看次数

字符串插值不适用于.NET Framework 4.6

我刚刚在我的机器上安装了.NET Framework 4.6,然后使用Visual Studio 2013创建了一个针对.NET Framework 4.6的ConsoleApplication.

我在Main方法中写了以下内容:

  string test = "Hello";
  string format = $"{test} world!";
Run Code Online (Sandbox Code Playgroud)

但这不编译.在Visual Studio 2015中执行相同操作.
为什么?

.net c# string-interpolation visual-studio

27
推荐指数
2
解决办法
3万
查看次数

如何在解决方案级别使用Microsoft.Net.Compilers?

我想开始使用Microsoft.Net.Compilers我们的构建服务器简化工作.但是,我只能通过将包添加到所有项目中来使其在每个项目级别上工作.
这是有问题的,因为必须将包添加到每个新创建的项目中.这可能导致代码在开发人员的机器上编译(具有最新的编译器),但在构建服务器上会失败.我们有很多项目(超过100个),所以这是比较常见的.

有没有Microsoft.Net.Compilers在解决方案级别使用的方法?

如果没有支持的方式,是否有一个命令行工具,我不必在构建服务器上安装?或者,这不是这些工具的预期用途吗?

.net c# msbuild build

16
推荐指数
1
解决办法
4013
查看次数

如何将C#6.0添加到Visual Studio 2013?

有没有办法将C#6.0添加到Visual Studio 2013?如果我不能为什么?

.net c# visual-studio-2013 c#-6.0

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

可以访问属性的子"DebuggerDisplay"属性吗?

当前状态

有两个班:

[DebuggerDisplay(@"One = {One}, two = {Two}")]
public class A
{
    public int One { get; set; }
    public B Two { get; set; }
}

[DebuggerDisplay(@"Three = {Three}")]
public class B
{
    public int Three { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用它们:

var a = new A {One = 5, Two = new B {Three = 10}};
Run Code Online (Sandbox Code Playgroud)

内部调试器,也就是在显示工具提示值a

一个= 5,两个= {DebuggerDisplayTest.B}

目标

我想要的是类似的东西

一个= 5,两个='三= 10'

我知道这可以通过重写ToString()类的方法来实现B.这只是感觉不对,因为我在我的应用程序中编写代码仅用于调试.

我也知道使用类似的字符串

[DebuggerDisplay(@"One = {One}, two = …
Run Code Online (Sandbox Code Playgroud)

.net c# debugging visual-studio debuggerdisplay

9
推荐指数
1
解决办法
977
查看次数

如何安装MS C#6.0编译器?

我正在尝试编译某人在使用C#6.0功能时创建的C#项目.

在以前的.NET版本中,当前的C#编译器已自动安装并准备与.NET Framework一起运行.显然,情况已不再如此.我目前在我的机器上安装了.NET 4.6.1,但调用csc告诉我:

Microsoft (R) Visual C# Compiler version 4.6.1055.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.

This compiler is provided as part of the Microsoft (R) .NET Framework, but only
supports language versions up to C# 5, which is no longer the latest version. Fo
r compilers that support newer versions of the C# programming language, see http
://go.microsoft.com/fwlink/?LinkID=533240
Run Code Online (Sandbox Code Playgroud)

链接将我转发给Github上Roslyn项目.它似乎没有提供任何二进制版本.

奇怪的是,谷歌搜索C# 6.0 compiler提出了几个关于如何向Visual Studio …

c# c#-6.0

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

在声明字符串时使用$作为前缀

我无法编译以下代码

var baseUrl = $"http://{endPoint}/";
Run Code Online (Sandbox Code Playgroud)

我从github项目得到了这个代码,我猜$ -sign告诉编译器使用属性的值(甚至做返回字符串的方法).

我一直在网上看,但我似乎找不到任何东西,但@"String"忽略转义字符.

c#

7
推荐指数
1
解决办法
1314
查看次数

类,结构或接口成员声明中的标记'='无效c#

对于人们来说,这可能是一个简单的问题,但我不明白为什么会这样.这是我的代码第1条:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GameCore
{
    public class PlayerCharacter
    {

        public void Hit(int damage)
        {
            Health -= damage;

            if (Health <= 0)
            {
                IsDead = true;
            }
        }

        public int Health { get; private set; } = 100;
        public bool IsDead{ get; private set; }

    }
}
Run Code Online (Sandbox Code Playgroud)

现在Visual Studio在赋值符号(=)上给出了无效的令牌错误(根据标题),我看不出原因.有谁可以解释这个吗?

我要做的是将生命的int设置为100,每次角色受到伤害时,生命值会降低.谢谢大家.

我正在使用Visual Studio 2013 v12.0.40629.00更新5

c# get set

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

关于C#6.0中"使用静态"的重大变化,如何处理在VS 2013和VS2015中编辑的C#代码库?

我有一个C#代码库,它正在VS 2013和VS 2015 CTP 6中进行编辑.CTP 6来自C#v6,它需要在某些导入上使用"静态".

有没有一种方法可以确定使用哪个版本(VS或C#),以便我可以使用预处理器指令来使用"using"或"using static"?

例如

#if CS6
   using static ...
#else
   using ...
#endif
Run Code Online (Sandbox Code Playgroud)

预处理器指令是我最初的想法.如果有另一种方法可以做到这一点,我全都耳朵.

c#-6.0 visual-studio-2015

4
推荐指数
1
解决办法
503
查看次数