C#的正确版本号是多少?什么时候出来?为什么我找不到关于C#3.5的任何答案?
这个问题主要是为了帮助那些使用不正确的版本号搜索答案的人,例如C#3.5.希望任何未能找到错误版本号的答案的人都会找到这个问题,然后再使用正确的版本号进行搜索.
.net c# .net-framework-version visual-studio compiler-version
有没有办法获取最新的.NET Framework的csc.exe的路径?
该文件通常位于:c:\ Windows\Microsoft.NET\Framework\vX.X.XXX但问题是可以安装多个版本+有32位和64位版本.
对此有何解决方案?
我正在使用VS2017 RC,我的应用程序以net framework 4.6.1为目标.
我有两个引用System.ValueTuple 4.3的程序集
MyProject.Services MyProject.WebApi
在MyProject.Services中,我有一个类,有这样的方法
public async Task<(int fCount, int cCount, int aCount)> GetAllStatsAsync()
{
// Some code...
return (fCount, cCount, aCount);
}
Run Code Online (Sandbox Code Playgroud)
在MyProject.WebApi中,我有一个使用此方法的控制器:
public async Task<HttpResponseMessage> GetInfoAsync()
{
// Some code...
var stats = await _myClass.GetAllStatsAsync();
var vm = new ViewModel
{
FCount = stats.fCount,
CCount = stats.cCount,
ACount = stats.aCount
};
return Request.CreateResponse(HttpStatusCode.OK, vm);
}
Run Code Online (Sandbox Code Playgroud)
Intellisense正在工作并解构元组,但是当我编译它时失败而没有错误列表窗口中的任何错误.在输出窗口中我有这个错误:
2> MyController.cs(83,31,83,40):错误CS1061:'ValueTuple'不包含'fCount'的定义,并且没有扩展方法'fCount'接受类型'ValueTuple'的第一个参数可以找到(你错过了using指令或程序集引用吗?)2> MyController.cs(84,39,84,49):错误CS1061:'ValueTuple'不包含'cCount'的定义,也没有扩展方法'cCount'接受可以找到类型为'ValueTuple'的第一个参数(你是否缺少using指令或汇编引用?)2> MyController.cs(85,35,85,40):错误CS1061:'ValueTuple'不包含定义对于'aCount'并且没有扩展方法'aCount'可以找到接受类型'ValueTuple'的第一个参数(你是否缺少using指令或汇编引用?)
我尝试添加DEMO和DEMO_EXPERIMENTAL构建标志但仍然失败.
什么是错的?
编辑1:
此代码有效,统计数据解析得很好.我可能遇到了一个bug.
public async Task<HttpResponseMessage> GetInfoAsync()
{
// …Run Code Online (Sandbox Code Playgroud) 是否有任何命令来获取C#编译器版本?该csc命令接缝有没有选项,以显示编译器版本.
PS当我csc在开发人员命令提示符中输入命令对于VS2015,它返回:
Microsoft (R) Visual C# Compiler version 1.3.1.60616
Copyright (C) Microsoft Corporation. All rights reserved.
Run Code Online (Sandbox Code Playgroud)
但是我很确定我的C#编译器比1.3更新!
我发现csc.exeRoslyn 附带的二进制文件可以采用-langversion:<string>命令行参数来设置我想要编译的 C# 版本。但是如何选择我希望编译器使用的 .NET 版本?
编译过程适用于我使用一些 .NET SQL Server 功能的简单测试程序,所以我知道编译器以某种方式在我的计算机上使用了 .NET 版本。我的C:\Windows\Microsoft.NET\Framework目录中有多个 .NET 版本,我假设编译器正在使用其中之一。我想明确设置编译器在编译我的程序时使用哪个版本的 .NET。
注意:如果您能详细说明编译器如何首先选择一个版本,那也将不胜感激。
我正在尝试使用System.CommandLine并安装了 nuget 软件包:
Install-Package System.CommandLine -Version 2.0.0-beta1.21308.1
Run Code Online (Sandbox Code Playgroud)
根据这篇 Microsoft 文章,我应该能够使用我的签名编写一个 Main() 方法,并且它应该会自动神奇地工作:
static void Main(FileInfo input, FileInfo output)
{
Console.WriteLine($"Hello World! {input} {output}");
}
Run Code Online (Sandbox Code Playgroud)
但是我的 Main() 方法签名被拒绝,我得到了CS5001: Program does not contain a static 'Main' method suitable for an entry point.
难道我做错了什么?根据这篇文章,这System.CommandLine应该是如何工作的。
我正在学习ASP.Net MVC 5,我想使用boolean属性的数据注释设置默认值.另外,我不想使用构造函数来设置默认值.可能吗?
public class BalanceDetailMV
{
public BalanceDetailMV()
{
this.isUnitNoEmptyInAllRow = true; // I do not want this
}
public bool isUnitNoEmptyInAllRow { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的魅力:
[DefaultValue("true")]
public bool isUnitNoEmptyInAllRow { get; set; }
Run Code Online (Sandbox Code Playgroud)
但上面不起作用.请指导我.
我如何判断我正在使用的C#版本?我正在使用带有xCode的Mac.我问的原因是因为我有一本书"C#3.0",它说你可以像这样声明一个多维数组.
int [,] num = new int [2,2];
当我尝试这样做时,我得到语法错误.我是否需要导入除基础之外的其他标题?
如何在运行时从我的代码中获取 c# 版本?我使用.net核心。例如,我可以使用以下代码获取框架版本:
FrameworkName = Assembly
.GetEntryAssembly()?
.GetCustomAttribute<TargetFrameworkAttribute>()?
.FrameworkName
Run Code Online (Sandbox Code Playgroud)
我需要类似 C# 版本的东西。
我有以下课程:
class Given
{
public string text = "";
public List<StartCondition> start_conditions = new List<StartCondition>();
};
class StartCondition
{
public int index = 0;
public string device = "unknown";
public string state = "disconnected";
public bool isPass = false;
};
Run Code Online (Sandbox Code Playgroud)
我想将它们转换为c#属性(使用get;和set;)
看看这个问题:什么是get-set-syntax-in-c,似乎我可以像这样使一个属性变得简单易行:
class Given
{
public string text { get; set; }
public List<StartCondition> start_conditions { get; set; }
};
class StartCondition
{
public int index { get; set; }
public string device { get; set; }
public …Run Code Online (Sandbox Code Playgroud) 我将C#用于.NET。我知道如何以编程方式检测.NET程序集的CLR版本,但是无法找到如何以编程方式检测代码中的C#版本。有人知道吗?TIA。
c# ×10
.net ×4
.net-core ×2
c#-7.0 ×2
csc ×2
asp.net ×1
asp.net-mvc ×1
c#-3.0 ×1
command-line ×1
containers ×1
properties ×1
roslyn ×1
version ×1