小编And*_*ykh的帖子

Microsoft.Practices.ServiceLocation来自哪里?

有人知道Microsoft.Practices.ServiceLocation从哪里来的吗?这是MS EnterpriseLibrary中使用的命名空间和dll.不可否认,这是一个非常简单的dll,只有少数几个类(使用反射器),但我找不到已发布的源代码.它不在Enterprise Library项目中,也不在Unity项目中.

那么有人知道这个的源代码是否已发布以及在哪里?还有为什么它不是Unity的一部分?它在其他地方使用吗?

.net enterprise-library

73
推荐指数
2
解决办法
7万
查看次数

如何按照Windows资源管理器的方式按文件名排序?

这是应用于powershell的"ASCIIbetical"命令与"Natural"命令的着名问题.为了能够以与资源管理器相同的方式对powershell进行排序,您可以在StrCmpLogicalW API上使用此包装器,它实际上为Windows资源管理器执行自然排序.这需要一些管道.

但是,这篇文章表明在python中有一个三线程实现的排序.人们希望Get-ChildItem cmdlet或至少文件系统提供程序可以具有内置的自然排序选项.不幸的是,他们没有.

所以这是一个问题,Powershell中最简单的实现是什么?简单来说,我的意思是编写的代码量最少,可能没有第三方/外部脚本/组件.理想情况下,我想要一个简短的 Powershell函数来为我做排序.

powershell

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

Webapi,Webhost和Owin之间的关系

我只是试图了解webapi,webhost(iis)和owin之间的关系.我会写下我目前的理解,并请你告诉我它是否正确.

  • 与MVC不同,Webapi是以独立于主机的方式编写的.这是在Owin之前的日子,但显然他们预计Owin迟早会发生.主机独立性主要意味着System.Web不在Webapi代码中的任何地方使用.System.Web完全依赖于IIS,没有它就无法工作.这样,Webapi理论上可以在任何地方托管 - 一旦其他主机可用.
  • Webhost(Microsoft.Owin.Host.SystemWeb,Microsoft.AspNet.WebApi.WebHost)是更高级API(如Webapi)和IIS之间的层.由于Webapi最初是独立于主机的,因此需要一个中间层来使其在特定主机(如IIS)上运行.Webapi(Microsoft.AspNet.WebApi.WebHost)的Webhost 提供了这一层.稍后还将有Owin(Microsoft.Owin.Host.SystemWeb)的Webhost层,允许在IIS上托管Owin兼容的任何东西.
  • Owin绕过最后一个.它基本上提供了一个抽象,理论上允许在任何主机上托管任何Owin兼容的应用程序,只要owin和该主机之间有一个层.Owin附带Microsoft.Owin.Host.SystemWeb了Webhost ()(类似于Webapi带来的Webhost),允许Owin应用程序在IIS上托管.它还带有自托管(Microsoft.Owin.SelfHost),允许Owin应用程序托管在任何可执行文件中.就Webapi而言,Owin还为Owap主机提供了Webapi(Microsoft.AspNet.WebApi.Owin),允许在Owin堆栈上运行WebApi.

以上所有意味着一个人有两种不同的方式在IIS上托管Webapi.它可以在没有Owin的情况下使用Webapi WebHost完成,也可以使用Owin Host for Webapi和Webhost for Owin完成.

Nuget参考:

这种理解是否正确?

.net asp.net iis asp.net-web-api owin

28
推荐指数
1
解决办法
5802
查看次数

如何将Visual Studio 2015连接到现有的Gitlab项目?

安装了gitlab的内部部署实例.在这个实例中有Visual Studio项目.将Visual Studio 2015连接到其中一个项目的最简单方法是什么?

使用GitHub,您可以通过选择"Connect to GitHub"来完成,如下图所示: 在此输入图像描述

然后粘贴存储库URL.下拉菜单中没有GitLab选项.配置Visual Studio 2015以使用gitlab存储库解决方案的最简单方法是什么?通过工作,我的意思是让您的通常源代码控制绑定到存储库.

注意,这个问题在连接到任何不是GitHub的git存储库的更一般的上下文中可能是有用的,并且不直接支持内置的Visual Studio菜单,而不仅仅是GitLab存储库.

git visual-studio gitlab visual-studio-2015

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

是否可以使用.net核心Roslyn编译器编译单个C#代码文件?

在旧的.net中,我们曾经能够运行csc编译器来编译单个cs文件或多个文件.使用.net核心,我们csc坚持拥有一个合适的项目文件.是否有一个独立的命令行编译器,它允许编译源代码文件而无需项目(并列出在同一命令行上引用的依赖项)?

在Linux上,当我安装了旧的csc和新的.net核心时,我得到了这些时间:

[root@li1742-80 test]# time dotnet build
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  test -> /root/test/bin/Debug/netcoreapp2.0/test.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:03.94

real    0m7.027s
user    0m5.714s
sys     0m0.838s

[root@li1742-80 test]# time csc Program.cs
Microsoft (R) Visual C# Compiler version 2.3.0.61801 (3722bb71)
Copyright (C) Microsoft Corporation. All rights reserved.


real    0m0.613s
user    0m0.522s
sys     0m0.071s
[root@li1742-80 test]#
Run Code Online (Sandbox Code Playgroud)

使用.net核心注意7秒,使用旧csc注意几百毫秒dotnet build.

我希望能够使用.net核心快速编译,因为我曾经能够使用csc.

c# compilation csc roslyn .net-core

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

WebApi如何将指定属性的指定属性设置为null?

这是场景.有一个web api put调用来更改sql server数据库中的对象.我们只想更改数据库对象上的字段,如果它们是在webapi调用json上显式指定的.例如:

{ "Name":"newName", "Colour":null }
Run Code Online (Sandbox Code Playgroud)

这应该将Name字段更改为"newName"和"Color"字段为null.与这个json相反:

{ "Name":"newName" }
Run Code Online (Sandbox Code Playgroud)

应该只更改名称字段,保持旧的颜色值不变.

WebApi检测属性是否通过的好方法是什么?

如果我像这样定义我的方法:

[HttpPut]
[Route("/item/{id}")]
public void ChangeItem(int id, Item item)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

item.Colour在任何一种情况下都将为null.请注意,我用各种这里的数据类型和物业工作Colour的例子是int,string,DateTime,Guid,等.

我知道我可以使用[FromBody]属性获取原始json,然后自己解析它,但似乎默认绑定器已经完成了大部分工作(包括验证),所以我很好奇我如何重用它,但也实现了我想要的是.什么是最简单的方法?

更新:

我想澄清一下,我的是"偶尔联系"的情景.也就是说,使用API​​的设备大多数时间都不在网络覆盖范围内,并且它们会不时使用API​​进行同步.

实际上,这意味着同步所需的大多数数据被聚合为零或一个"推送更新到服务器"调用,然后是"从服务器获取最新状态"调用.使用后端的Sql Server和EF导致几个不同的(有时是无关的)实体包含在单个json中.例如:

class TaskData
{ 
    public IList<User> AssignedUsers {get; set;} 
    public IList<Product> Products {get; set;} 
    public Task Task {get; set}
}
Run Code Online (Sandbox Code Playgroud)

此外,用于为GET调用生成json的模型类与EF Entites是分开的,因为数据库模式与API对象模型不完全匹配.

.net c# json asp.net-web-api

23
推荐指数
1
解决办法
4926
查看次数

当空引用似乎不可能时,为什么我们会收到可能取消引用空引用警告?

在HNQ 上阅读了这个问题后,我继续阅读C# 8 中的可空引用类型,并做了一些实验。

我非常清楚,当有人说“我发现了一个编译器错误!”时,10 次中有 9 次,甚至更频繁。这其实是有意为之,也是自己的误会。而且因为我今天才开始研究这个功能,显然我对它不是很了解。有了这个,让我们看看这段代码:

#nullable enable
class Program
{
    static void Main()
    {
        var s = "";
        var b = s == null; // If you comment this line out, the warning on the line below disappears
        var i = s.Length; // warning CS8602: Dereference of a possibly null reference
    }
}
Run Code Online (Sandbox Code Playgroud)

在阅读我上面链接的文档后,我希望该s == null行给我一个警告——毕竟s显然是不可为空的,所以将它与它进行比较null是没有意义的。

相反,我在下一行收到警告,警告说这s可能是一个空引用,即使对于人类来说,很明显它不是。

此外,如果我们不与 进行比较,则不会显示警告。 …

c# roslyn c#-8.0 nullable-reference-types

19
推荐指数
2
解决办法
7954
查看次数

asp.net mvc routing:如何使用默认动作但非默认参数?

我正在改写这个问题,因为到目前为止答案显示我没有把它定义得足够好.我将留下原始问题以供参考.

设置路由时,您可以为不同的URL /路由部分指定默认值.让我们考虑VS向导生成的示例:

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "DefaultPage", action = "Index", id = UrlParameter.Optional } // Parameter defaults
Run Code Online (Sandbox Code Playgroud)

在此示例中,如果未指定controller,将使用DefaultPageController,如果未指定action,则将使用"Index"操作.网址通常如下:http://mysite/MyController/MyAction.

如果Url中没有这样的操作:http://mysite/MyController那么将使用索引操作.

现在让我们假设我的控制器Index和AnotherAction中有两个动作.与它们对应的URL 分别是http://mysite/MyControllerhttp://mysite/MyController/AnotherAction.我的"索引"操作接受参数id.所以如果我需要将参数传递给我的Index动作,我可以这样做:http://mysite/MyController/Index/123.请注意,与URL不同http://mysite/MyController,我必须明确指定Index操作.我想做的是能够通过http://mysite/MyController/123而不是http://mysite/MyController/Index/123.我不需要此URL中的"索引"我希望mvc引擎识别,当我要求时http://mysite/MyController/123,123不是动作(因为我没有定义具有此名称的动作),而是我的默认动作的参数"指数".如何设置路由来实现此目的?

以下是问题的原始措辞.


我有一个控制器,有两种方法,这样定义

    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(SomeFormData data)
    {
        return View();

    }
Run Code Online (Sandbox Code Playgroud)

这允许我http://website/Page在用户导航到此URL(GET)时以及随后回发表单(POST)时处理Url .

现在,当我处理回发帖时,在某些情况下我想将浏览器重定向到此网址:

http://website/Page/123
Run Code Online (Sandbox Code Playgroud)

其中123是一个整数,我需要一个方法来处理我的控制器中的这个URL.

如何设置路由,这有效吗?目前我有向导生成的"默认"路由,如下所示:

        routes.MapRoute(
            "Default", // Route …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc routing url-routing asp.net-mvc-routing

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

每个JavaScript程序都是TypeScript程序吗?

打字稿语言规范说:

每个JavaScript程序也是一个TypeScript程序

现在考虑这段代码:

var i = 5;
i = "five";
Run Code Online (Sandbox Code Playgroud)

这是一个完全有效的javascript,无错误执行.它不是有效的TypeScript,也无法编译.

我对上面引用的语句和代码示例的理解明显不匹配.

您能否澄清一下,在上面给出的示例的上下文中,什么使规范声明成立.

更新

为了解决该陈述不反映程序有效性的论点,让我们这样重写:

每个JavaScript程序也是有效或无效的TypeScript程序

要么

每个JavaScript程序都不一定是有效的TypeScript程序

如果作者想说后者,他们为什么不这么说呢?

javascript typescript

14
推荐指数
2
解决办法
1023
查看次数

呼叫签名和功能类型之间的区别

我试图理解为什么我们为调用签名和函数类型使用不同的语法.请考虑以下代码:

interface MyInterface {
   // This is call signature
   // It is used inside object type, function expression, function declaration, etc...
    (x:number, y:number):number; 
}

var myOne : MyInterface = (x,y) => x + y;
            // vv this is function type
var myTwo : (x:number, y:number)=>number = (x,y) => x + y; 
// function type is used in function type literal
Run Code Online (Sandbox Code Playgroud)

在这个代码myOnemyTwo变量实际上是一样的.它们(据我所见)是完全相同的类型,只是定义不同.

现在,当我们使用接口来定义它们时,我们使用如下所示的调用签名:

(x:number, y:number):number
Run Code Online (Sandbox Code Playgroud)

当我们不使用接口时,我们使用函数类型文字:

(x:number, y:number)=>number
Run Code Online (Sandbox Code Playgroud)

两者都表达相同的东西,参数的名称和类型以及返回类型的类型.我想知道,为什么我们需要两种不同但又相似的方法来在打字稿中写同样的东西?

typescript

14
推荐指数
1
解决办法
9439
查看次数