在.NET 3.5中似乎没有OrderedDictionary(在System.Collections.Specialized命名空间中)的通用实现.有没有我错过的?
我发现那里的实现提供了功能,但想知道是否/为什么没有开箱即用的通用实现,如果有人知道它是否是.NET 4.0中的东西?
这支持吗?
如果是这样,是否有一些技巧可以启用它?我假设Razor没有使用足够新的编译器......?VS2015 IDE似乎很好用,但在运行时我得到了
CS1056:意外字符'$'
我刚刚在我的机器上安装了.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中执行相同操作.
为什么?
我想开始使用Microsoft.Net.Compilers我们的构建服务器简化工作.但是,我只能通过将包添加到所有项目中来使其在每个项目级别上工作.
这是有问题的,因为必须将包添加到每个新创建的项目中.这可能导致代码在开发人员的机器上编译(具有最新的编译器),但在构建服务器上会失败.我们有很多项目(超过100个),所以这是比较常见的.
有没有Microsoft.Net.Compilers在解决方案级别使用的方法?
如果没有支持的方式,是否有一个命令行工具,我不必在构建服务器上安装?或者,这不是这些工具的预期用途吗?
有没有办法将C#6.0添加到Visual Studio 2013?如果我不能为什么?
当前状态
有两个班:
[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) 我正在尝试编译某人在使用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 …
我无法编译以下代码
var baseUrl = $"http://{endPoint}/";
Run Code Online (Sandbox Code Playgroud)
我从github项目得到了这个代码,我猜$ -sign告诉编译器使用属性的值(甚至做返回字符串的方法).
我一直在网上看,但我似乎找不到任何东西,但@"String"忽略转义字符.
对于人们来说,这可能是一个简单的问题,但我不明白为什么会这样.这是我的代码第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#代码库,它正在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)
预处理器指令是我最初的想法.如果有另一种方法可以做到这一点,我全都耳朵.