小编Jér*_*VEL的帖子

使用Visual Studio Team Services REST API的AJAX跨域问题

我正在尝试为Visual Studio Team Services REST API编写一个JavaScript客户端,它将AJAX请求发送到我们自托管的Team Foundation Server 2015,但我面临跨域问题.

API需要凭据进行身份验证,但由于安全原因,浏览器会阻止我的请求,因为参数Access-Control-Allow-Origin是使用通配符设置的*.

我试图在IIS管理器中的HTTP响应标头中添加此参数,也在TFS web.config文件中添加(实际上是相同的),但是我收到一个错误,告诉我这个参数有两个不同的值(例如:*http://localhost:58785),应该只有一个.我想这个值已经在库的代码中定义,我无法访问,因为TFS Web服务已经在IIS上编译和运行.

我还尝试<location allowOverride="false">在web.config中使用标记,禁止配置覆盖,但在这种情况下TFS将无法启动.

有人已经在这里询问了这个问题,并且还在uservoice上发布了一张票,但由于API的名称非常模糊(Visual Studio Online REST API),我不知道这个人是否在线谈论真正的Visual Studio或者他的case与我的相同(自托管TFS服务器).

我们已经在C#中实现了一些运行良好的功能,但现在我们确实需要实现一个JavaScript客户端.编写Web服务并将其用作查询API的代理对我们来说真是一团糟,我们不想这样做.

这太可悲了,我们无法向API发送AJAX请求,因为我们无法更改配置.

ajax cross-domain cors tfs-2015 azure-devops-rest-api

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

在解决方案级别管理Microsoft和StyleCop代码分析规则

我正在尝试将代码分析引入我们的项目,因此我开始使用.NET Framework和.NET Standard项目的解决方案.

我按照本教程进行了总结,这就是我所做的:

  • SolutionName.ruleset在解决方案级别添加了一个文件
  • stylecop.json在解决方案级别添加了一个文件,并将该文件作为每个项目中的链接引用
  • StyleCop.Analyzers 1.1.0-beta009在每个项目上安装Nuget包
  • 安装Microsoft.NetCore.Analyzers在.NET Standard项目和Microsoft.NetFramework.Analyzers.NET Framework项目中

首先,Visual Studio看起来很麻烦,但这可能是由于我不明白的一些黑魔法.

如果我单击解决方案资源管理器中的规则集文件,我会点击并勾选每个规则组的几个复选框,然后重新构建以查看错误列表窗口中的更改,但在很短的时间后它就不会再工作了.我甚至试图取消选择一切,重新建立,我的所有警告仍在这里.使它们消失的唯一方法是关闭Visual Studio.

如屏幕截图所示,我花费了.NET标准库项目调用ConfigLibrary,看它有几个相关的分析器.

在此输入图像描述

问题是所有这些规则似乎来自Nuget包的DLL C:\Users\user\.nuget\packages\stylecop.analyzers\1.1.0-beta009\analyzers\dotnet\cs\StyleCop.Analyzers.dll.

如果我取消选择StyleCop.Analyzers规则集文件中的规则,它什么都不做,如果我使用搜索文本框搜索这些规则代码,则表明它们未被选中.但最终这些规则仍然适用......

当我尝试StyleCop.Analyzers为所有项目卸载Nuget包时,即使在我的规则集文件中选择了规则,我也不会得到所有这些警告.

另外我的规则集文件经常被自动重写,我不知道是什么过程.即使重新启动Visual Studio,规则也不再有效

在此输入图像描述

那么在.NET Framework和.NET Core项目的解决方案级别处理一些代码分析规则的正确方法是什么?

如何避免分析器的DLL覆盖我的规则集文件中定义的规则?是否有一种解决方法可以使Visual Studio正确刷新应用的规则?Build,Rebuild并且Run code analysis on solution都是错误的,只重新启动Visual Studio工作,但它是一种繁重的解决方法,尤其是所有这些规则......

是我不理解基础概念还是面对.NET Core的一些奇怪的错误?谢谢

.net code-analysis stylecop visual-studio .net-core

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

类型'float - > float'与'float'类型不匹配

刚开始学习F#和我试图生成和评估泰勒系列的第10项è.我最初编写此代码来计算它:

let fact n = function
    | 0 -> 1
    | _ -> [1 .. n] |> List.reduce (*)

let taylor e =
    let term n = (e ** n) / (fact n)
    [1 .. 10]
        |> List.map (term)
        |> List.reduce (+)
Run Code Online (Sandbox Code Playgroud)

这导致错误,因为**操作员不工作int.显然,我需要将所有内容都投射到float一起才能使一切正常工作.所以:

let fact (n: float) = function
    | 0.0 -> 1.0
    | _ -> [1.0 .. n] |> List.reduce (*)

let taylor (e: float) =
    let term (n: float) = …
Run Code Online (Sandbox Code Playgroud)

f# types casting

5
推荐指数
1
解决办法
516
查看次数

订阅.NET Core 2.1中xUnit中的AppDomain.UnhandledException

我有一个针对 .NET Core 2.1 的 xUnit 测试项目,我想捕获所有未处理的异常。

[Fact]
public static void Test()
{
    AppDomain.CurrentDomain.UnhandledException += Domain_UnhandledException;

    string test = null;
    test.ToString();
}

private static void Domain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    var ex = (Exception)e.ExceptionObject;
}
Run Code Online (Sandbox Code Playgroud)

我在事件处理程序中设置了断点Domain_UnhandledException,但从未调用此函数。

如果我在单独的 .NET Standard 2.0 类库中订阅该AppDomain.CurrentDomain.UnhandledException事件,并使我的 NUnit 测试项目调用错误代码并抛出异常,我会得到相同的结果:Domain_UnhandledException未调用。

我还尝试使用创建一个新域AppDomain.CreateDomain,但收到一条错误消息,告诉我该框架不支持创建其他域。

我怎样才能做到这一点?我的目标是捕获 Core .NET Standard 项目中所有未处理的异常并将其全部记录下来。

谢谢

c# xunit .net-core

5
推荐指数
0
解决办法
428
查看次数

使用.csproj和dotnet pack命令中的MsBuild将文件从Nuget包复制到输出目录

上一次我不得不找出如何从Nuget包中提取一些文件的过程至少花了我6个月的时间,但最终我设法找到了解决方案

事实是,此解决方案假定我有一个.nupkg文件并手动添加一个.targets文件以执行提取过程。

现在,情况有所不同:

  1. 我没有任何.nupgk文件,我们使用以下命令在VSTS服务器上自动生成一个文件:dotnet pack命令。然后我们从Nuget服务器中使用软件包
  2. 我们再花6个月时间找不到解决方案

这是我的 ProjectName.csproj

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
        <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
        <Authors>Jérôme MEVEL</Authors>
        <Version>1.0.3</Version>
        <GeneratePackageOnBuild>true</GeneratePackageOnBuild>

        <!-- This answer got many votes on a Github thread so I tried just in case -->
        <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

        <!-- Just trying that too-->
        <IncludeBuildOutput>true</IncludeBuildOutput>
        <IncludeContentInPack>true</IncludeContentInPack>

        <!-- I wanted to see the full generated Nuget package -->
        <IncludeSource>true</IncludeSource>

        <!-- desperate attempt -->     
        <TargetsForTfmSpecificBuildOutput>GetMyPackageFiles</TargetsForTfmSpecificBuildOutput>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Dapper" Version="1.50.5" />
        <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.1.1" />
        <PackageReference …
Run Code Online (Sandbox Code Playgroud)

.net c# msbuild nuget .net-standard

5
推荐指数
3
解决办法
4622
查看次数

强制 REAL 不可为空的字符串引用类型

我刚刚尝试了新的C# 8 Nullable Reference Type,它允许我们使用不可为空的字符串。

在我的.csproj(.NET Core 3.1) 中,我设置了这个:

<Nullable>enable</Nullable>
Run Code Online (Sandbox Code Playgroud)

我创建了一个FooClass如下:

public class FooClass
{
    public FooClass(string testString, DateTime testDate)
    {
        if (testString == null || testString == string.Empty)
            throw new ArgumentNullException(nameof(testString));
        else if (testDate == null)
            throw new ArgumentNullException(nameof(testDate));

        MyString = testString;
        MyDate = testDate;
    }

    public string MyString { get; }
    public DateTime MyDate { get; }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我故意在我的类中创建一个Main()带有null值的新实例时:

var test = new FooClass(testString:null, testDate:null);
Run Code Online (Sandbox Code Playgroud)

编译器对testString参数没问题,但 …

c# string .net-core c#-8.0 nullable-reference-types

5
推荐指数
1
解决办法
353
查看次数

不可为空的引用类型:为什么编译器认为我的对象可以为空?

我有一个项目,我在其中启用了新的Nullable 引用类型功能

 <Nullable>enable</Nullable>
Run Code Online (Sandbox Code Playgroud)

现在让我们考虑这段代码

public class Foo  {    }

var foo = new Foo();
Run Code Online (Sandbox Code Playgroud)

编译器认为该foo变量可以为空 ( Foo?)。这是为什么?我不明白。

现在启用 Nullable 引用类型功能后,返回的Foo对象不应为 null,因为它是不可为 null 的类型。

如果我希望它可以为空,我会指定它有一个 Foo?

那么为什么编译器说它是一个可为空的变量呢?

谢谢

编辑

这是我在这里描述的内容的屏幕截图。当您将鼠标悬停在foo变量上时

将 foo 变量悬停

c# .net-core nullable-reference-types

5
推荐指数
1
解决办法
168
查看次数

找不到类型或命名空间名称“启动”

我正在尝试向我的项目添加集成测试,但在我的 Tests.cs 文件中不断收到错误“找不到类型或命名空间名称‘Startup’”。

我有两个 project.json 文件,一个在我的 src 项目中,另一个在我的测试项目中。

src project.json 看起来像这样:

{
"dependencies": {
"Microsoft.NETCore.App": {
  "version": "1.0.1",
  "type": "platform"
},
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.0",
"Microsoft.EntityFrameworkCore.Tools": {
  "version": "1.0.0-preview2-final",
  "type": "build"
},
"Microsoft.AspNetCore.Mvc": "1.0.1",
"Microsoft.AspNetCore.Routing": "1.0.1",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0-*",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Npgsql.EntityFrameworkCore.PostgreSQL": "1.0.2",
"Swashbuckle": "6.0.0-beta902" },
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
// "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview2-final",
"Microsoft.Extensions.SecretManager.Tools": "1.0.0-preview2-final"},
"frameworks": {
"netcoreapp1.0": {
  "imports": [
    "dotnet5.6",
    "portable-net45+win8"]}}, …
Run Code Online (Sandbox Code Playgroud)

integration-testing xunit asp.net-core

4
推荐指数
2
解决办法
5115
查看次数