小编dav*_*v_i的帖子

使用dotnet cli恢复Mvc CodeAnalysis依赖关系时遇到问题

我在恢复ASP.NET 5/ASP.NET Core 1.0的依赖项时遇到错误.

似乎有几个依赖项(即Microsoft.CodeAnalysis.CSharp/ .Common)Microsoft.AspNet.Mvc被修复为看似过时的软件包.

对此的要求是使用dotnetcli工具并以.NET Vanilla和.NET Core为目标.

有没有办法让Mvc引用Core兼容的CodeAnalysis版本?


在Visual Studio 2015中重现的步骤(v14.0.24729.00 Update 1):

  1. 文件>新建>项目> Web> ASP.NET Web应用程序
  2. API.NET 5模板> Web API
  3. 打开PM,运行命令 dotnet restore

输出:

info : Restoring packages for C:\PATH_TO_SOLUTION\WebApplication2\src\WebApplication2\project.json...
error: Microsoft.CodeAnalysis.CSharp 1.1.0-rc1-20151109-01 is not compatible with DNXCore,Version=v5.0.
error: Microsoft.CodeAnalysis.Common 1.1.0-rc1-20151109-01 is not compatible with DNXCore,Version=v5.0.
error: Some packages are not compatible with DNXCore,Version=v5.0.
error: Microsoft.CodeAnalysis.CSharp 1.1.0-rc1-20151109-01 is not compatible with DNXCore,Version=v5.0 (win7-x64).
error: Microsoft.CodeAnalysis.Common 1.1.0-rc1-20151109-01 is not compatible with …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc .net-core asp.net-core dotnet-cli

10
推荐指数
1
解决办法
1980
查看次数

在 Rust 中将函数转换为 trait 的机制是什么?

来自 actix-web 的一个例子如下:

use actix_web::{web, App, Responder, HttpServer};

async fn index() -> impl Responder {
    "Hello world!"
}

#[actix_rt::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new().service(
            web::scope("/app").route("/index.html", web::get().to(index)),
        )
    })
    .bind("127.0.0.1:8088")?
    .run()
    .await
}
Run Code Online (Sandbox Code Playgroud)

我的问题是关于该语句to(index)在 Rust 中是如何工作的。

查看源代码,to我们看到:

pub fn to<F, T, R, U>(mut self, handler: F) -> Self
where
    F: Factory<T, R, U>,
// --- snip
Run Code Online (Sandbox Code Playgroud)

其中Factory定义为

pub trait Factory<T, R, O>: Clone + 'static
where …
Run Code Online (Sandbox Code Playgroud)

rust actix-web

10
推荐指数
1
解决办法
127
查看次数

负数的立方根

我试图找到一个负数的立方根,但我得到一个NaN.有帮助吗?

System.out.println(Math.pow(-8, 1.0 / 3.0));
Run Code Online (Sandbox Code Playgroud)

java math

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

对齐多个排序列表

如果我有,例如以下List<int>s

{ 1, 2, 3, 4 } //list1
{ 2, 3, 5, 6 } //list2
...
{ 3, 4, 5 }    //listN
Run Code Online (Sandbox Code Playgroud)

检索以下相应List<int?>s 的最佳方法是什么?

{    1, 2,    3,    4,    null, null } //list1
{ null, 2,    3,    null, 5,    6    } //list2
...
{ null, null, 3,    4,    5,    null } //listN
Run Code Online (Sandbox Code Playgroud)

c# linq

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

理性算术,如何表示分数?

是否有任何标准的C#类型或库用于精确的理性算术,如除法?

十进制不是我需要的:

1m/3m + 1m/3m + 1m/3m != 1
Run Code Online (Sandbox Code Playgroud)

我正在考虑存储两位小数,分子和分母的东西,并完全执行乘法和除法.这可以在需要时简化分数并显式转换为double或decimal.

c# math

9
推荐指数
0
解决办法
323
查看次数

C#:通用方法不调用特定方法重载

我正在尝试在C#中创建一个泛型方法,它将根据其主体中的参数数据类型调用不同的方法,然后处理它们的结果.我试图通过创建一个通用的包装器方法来实现这一点,然后提供处理方法的几个重载 - 包括一个通用的,如果没有特定的重载可用.

当我直接调用处理方法时,正确选择了适当的版本.但是当我从包装器方法调用它时,它总是选择泛型方法,即使我传递给它的特定数据类型存在匹配的重载.

有没有办法调整代码使其行为符合我的需要?或者我必须使用不同的方法.

我需要代码与Mono 2.6兼容.

using System;

class Program
{
    static void Func<T>(T val)
    {
        Console.WriteLine("Generic Func");
    }

    static void Func(int val)
    {
        Console.WriteLine("Int Func");
    }

    static void Func(string val)
    {
        Console.WriteLine("String Func");
    }

    static void FuncWrap<T>(T val)
    {
        Console.Write("Wrap: ");
        Func(val);
    }

    static void Main(string[] args)
    {
        Func(2);
        Func("Potato");
        Func(2.0);

        FuncWrap(2);
        FuncWrap("Potato");
        FuncWrap(2.0);

        Console.Read();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# generics polymorphism mono unity-game-engine

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

为什么我们需要在MSIL中显式调用父构造函数?

我只是花了几个小时被一个NullReferenceException我认为不应该有的地方弄糊涂了.我正在构建一个类似的类:

public class MyClass : MyBase<Foo>
{
    public MyClass()
    {
        base.Method(Foo.StaticField);
    }
}
Run Code Online (Sandbox Code Playgroud)

哪里

public class MyBase<T>
{
    private SomeObject bar = new SomeObject();

    public void Method(object o)
    {
        this.bar.AnotherMethod(o); // exception thrown here
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上我的IL如下:

ctorIl.Emit(OpCodes.Ldarg_0);
ctorIl.Emit(OpCodes.Ldsfld, staticField);
ctorIl.Emit(OpCodes.Box, typeof(FieldType));
ctorIl.Emit(OpCodes.Call, parentMethod);
ctorIl.Emit(OpCodes.Ret);
Run Code Online (Sandbox Code Playgroud)

我终于想到它一定bar是没有被实例化的.我在C#中构建了我的类并编译它,发现唯一的区别是以下应该高于上面的IL:

ctorIl.Emit(OpCodes.Ldarg_0);
ctorIl.Emit(OpCodes.Call, parentCtor);
// as above
Run Code Online (Sandbox Code Playgroud)

使用这些行,我的代码现在可以按预期工作.

所以我的问题是:

  1. 为什么我们需要显式调用基础构造函数来实例化字段?
  2. 是否合法使用不调用基础构造函数?
  3. ......如果没有,为什么CLR接受它作为有效的程序?

c# cil reflection.emit

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

无法绑定到DataSource上的属性或列名称.参数名称:dataMember

当我尝试绑定到System.Type.Name时,这是我遇到的异常.

这是我正在做的事情:

this.propertyTypeBindingSource.DataSource = typeof(System.Type);

/* snip */

this.nameTextBox1.DataBindings.Add(
    new System.Windows.Forms.Binding(
        "Text", 
        this.propertyTypeBindingSource, 
        "Name", true));
Run Code Online (Sandbox Code Playgroud)

是否有一些绑定到System.Type的技巧,是不允许的还是有任何解决方法?绑定到其他类型没有问题.

c# asp.net data-binding

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

方法参数中的变量赋值

我刚刚发现(发现一个错误)你可以这样做:

string s = "3";
int i;
int.TryParse(s = "hello", out i); //returns false
Run Code Online (Sandbox Code Playgroud)

是否合法使用赋值的返回值?

(显然i++是,但这是一样的吗?)

c#

8
推荐指数
3
解决办法
1782
查看次数

Visual Studio构建事件中的批处理文件中的输出错误,警告和消息

我正在编写一个批处理文件,要从Visual Studio中的预构建事件执行.

如何将输出错误,警告和消息输出到Visual Studio错误列表?

搜索这个很难,因为大多数事情都是如何修复错误而不是抛出它们!

batch-file visual-studio build-events

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