小编cri*_*mbo的帖子

Microsoft.Bcl.Build NuGet包有什么作用?

我无法找到任何关于此的文档 - 来自Microsoft.Bcl.Build Nuget页面的链接没有提供太多帮助:

此包提供构建基础结构组件,以便可以成功构建引用特定Microsoft包的项目.

除非您收到指示您添加引用的构建警告,否则不要直接引用此包.

从查看Microsoft.Bcl.Build.targets文件看,它看起来像管理绑定重定向和包引用.看起来某些功能仅在Visual Studio中运行时使用.

任何人都可以提供有关此软件包的更多信息吗? 这对我们的构建服务器环境来说很痛苦,完全从源代码构建时可以忽略它(例如构建服务器环境)吗?

.net nuget .net-4.5

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

Json.NET,如何自定义序列化以插入JSON属性

我一直无法找到合理的实现,JsonConvert.WriteJson这允许我在序列化特定类型时插入JSON属性.我的所有尝试都导致"JsonSerializationException:使用类型XXX检测到自引用循环".

关于我正在尝试解决的问题的更多背景:我使用JSON作为配置文件格式,我使用a JsonConverter来控制我的配置类型的类型解析,序列化和反序列化.$type我想使用更有意义的JSON值来解决正确的类型,而不是使用属性.

在我的简化示例中,这是一些JSON文本:

{
  "Target": "B",
  "Id": "foo"
}
Run Code Online (Sandbox Code Playgroud)

其中JSON属性"Target": "B"用于确定此对象应序列化为类型B.考虑到这个简单的例子,这种设计似乎并不那么引人注目,但它确实使配置文件格式更加有用.

我还希望配置文件是可循环访问的.我有反序列化的工作,我无法工作的是序列化案例.

我的问题的根源是我找不到JsonConverter.WriteJson使用标准JSON序列化逻辑的实现,并且不会抛出"自引用循环"异常.这是我的实现:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
    JProperty typeHintProperty = TypeHintPropertyForType(value.GetType());

    //BUG: JsonSerializationException : Self referencing loop detected with type 'B'. Path ''.
    // Same error occurs whether I use the serializer parameter or a separate serializer.
    JObject jo = JObject.FromObject(value, serializer); 
    if (typeHintProperty != null)
    {
        jo.AddFirst(typeHintProperty);
    }
    writer.WriteToken(jo.CreateReader());
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这是Json.NET中的一个错误,因为应该有办法做到这一点.不幸的是 …

c# json.net

19
推荐指数
3
解决办法
9210
查看次数

如何在Visual Studio代码中使用Karma/Jasmine调试单元测试?

我希望能够在Visual Studio Code中调试单元测试,但到目前为止它已经是一个混合包.

我的设置:

launch.json

{
   "version": "0.2.0",
   "configurations": [
           {
              "name": "Debug tests",
              "type": "chrome",
              "request": "attach",
              "port": 9222,
              "sourceMaps": true,
              "webRoot": "${workspaceRoot}"
           }
   ]
}
Run Code Online (Sandbox Code Playgroud)

karma.config.js

customLaunchers: {
   Chrome_with_debugging: {
     base: 'Chrome',
     flags: ['--remote-debugging-port=9222']
   }
}
Run Code Online (Sandbox Code Playgroud)

这似乎在某种程度上起作用,如果我启动VS Code调试器它似乎附加(底栏变为橙色).如果我做出改变,Karma也会启动和调试器 - 但它总是暂停zone.js(顺便说一下这是一个Angular项目)而不会干扰我:

暂停在zone.js中

如果我点击"继续"它实际上击中了我的断点

在此输入图像描述

我可以检查一些变量,但不是全部,

显示了一些变量,有些则没有

例如,我看不到actual传递给Jasmine expect方法的值.

所以a)为什么调试器总是在内部暂停zone.js- 测试的代码来自Redux reducer并在任何Angular上下文之外调用,以及b)我无法检查局部变量(这是一个showstopper)马上)?

debugging karma-runner visual-studio-code

11
推荐指数
1
解决办法
9005
查看次数

Swashbuckle:使非空属性成为必需

在ASP.NET Core Web应用程序中使用Swashbuckle.AspNetCore,我们具有以下响应类型:

public class DateRange
{
    [JsonConverter(typeof(IsoDateConverter))]
    public DateTime StartDate {get; set;}

    [JsonConverter(typeof(IsoDateConverter))]
    public DateTime EndDate {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

当使用Swashbuckle发出不拘一格的API JSON时,它将变为:

{ ...

  "DateRange": {
    "type": "object",
    "properties": {
      "startDate": {
        "format": "date-time",
        "type": "string"
      },
      "endDate": {
        "format": "date-time",
        "type": "string"
      }
    }
  }
...
}
Run Code Online (Sandbox Code Playgroud)

这里的问题在于这DateTime是一个值类型,并且永远不能为null。但发出的Swagger API JSON不会将2个属性标记为required。所有其他值类型的行为相同:int,long,byte等-它们都被视为可选值。

为了完成图片,我们将Swagger API JSON馈送到dtsgenerator来为JSON响应模式生成Typescript接口。例如,上面的类变为:

export interface DateRange {
    startDate?: string; // date-time
    endDate?: string; // date-time
}
Run Code Online (Sandbox Code Playgroud)

这显然是不正确的。在深入研究这一点之后,我得出结论,dtsgenerator在使不需要的属性在打字稿中可为空方面做了正确的事情。也许摇摇欲坠的规范需要对nullable vs required的明确支持,但是现在将2混为一谈。

我知道我可以[Required] …

c# asp.net-web-api swagger swashbuckle asp.net-core

6
推荐指数
3
解决办法
2564
查看次数

如何在visual studio中调试typescript jasmine测试?

我在Karma中运行了typescript代码和typescript jasmine测试.我可以从命令行运行测试(使用Karma),也可以从ReSharper测试运行器运行测试.据推测,我也可以使用Karma Test Adapter VS扩展VS适配器为Karma运行测试.因此,有很多运行测试的选项.

我的问题是:如何在VS调试器中调试测试?

karma-runner karma-jasmine

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

DacServices.Deploy到SQL Server LocalDB 2016失败 - 无法连接

此调用DacServices.Deploy一直适用于SQL Server LocalDB 2014,但在安装SQL Server LocalDB 2016时失败:

string dacConnectionString = $"Server=(localdb)\\mssqllocaldb; Integrated Security=true; database={DatabaseName}";
var dacServices = new DacServices(dacConnectionString);
dacServices.Message += (sender, args) => Console.WriteLine($"{args.Message.Prefix}: {args.Message.Message}"); // Log dacpac deploy messages
dacServices.Deploy(LoadDacPac(), DatabaseName, true, new DacDeployOptions()
                                                     {
                                                         BlockOnPossibleDataLoss = false
                                                     });
Run Code Online (Sandbox Code Playgroud)

DacServices.DeployLocalDB 2016 抛出的异常是:

Microsoft.SqlServer.Dac.DacServicesException was unhandled by user code
  HResult=-2146233088
  Message=Could not deploy package.
  Source=Microsoft.SqlServer.Dac
  StackTrace:
       at Microsoft.SqlServer.Dac.DeployOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context)
       at Microsoft.SqlServer.Dac.OperationExtension.Execute(IOperation operation, DacLoggingContext loggingContext, CancellationToken cancellationToken)
       at Microsoft.SqlServer.Dac.DacServices.InternalDeploy(IPackageSource packageSource, Boolean isDacpac, String targetDatabaseName, DacDeployOptions options, CancellationToken …
Run Code Online (Sandbox Code Playgroud)

dac localdb sql-server-data-tools sql-server-2016-localdb

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

为Visual Studio 2017无头安装SQL Server数据工具(SSDT)

对于构建服务器,我们需要为Visual Studio 2017无头安装SQL Server数据工具.

我们的构建服务器已经拥有"Visual Studio 2017的构建工具",它为无头构建提供了很好的支持.但是由于缺少MSBuild目标,任何SSDT项目的解决方案都会失败,例如:

[MSBuild] src\Database\Upfront.Database.sqlproj: Build default targets [10:27:46][src\Database\Upfront.Database.sqlproj] E:\BuildAgent\work\7769fbf76d8b9008\src\Database\Upfront.Database.sqlproj(56, 3): error MSB4019: The imported project "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

首先,我尝试修改"Build Studio for Visual Studio 2017"安装的组件集,但似乎没有可用的SSDT组件.

其次,我尝试为Visual Studio 2017安装SSDT,它似乎没有正确安装到"VS 2017构建工具"配置文件中.它允许我创建一个新的VS 2017配置文件,例如SQL,因此安装了所需的MSBuild文件C:\Program Files (x86)\Microsoft Visual Studio\2017\SQL\; 但是它改变了我的msbuild环境变量,因此C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools找不到"Build Tools for VS 2017"文件(其中),导致C#项目无法构建.

似乎"用于Visual Studio 2017的SSDT"和"用于Visual …

sql-server-data-tools visual-studio-2017

5
推荐指数
2
解决办法
2776
查看次数

如何为 .NET Core 应用程序扩展 msdeploy/发布管道

Visual Studio 中的旧样式/.NET Framework webapps 有一个可以自定义的发布管道。例如,Parameters.xml可以指定一个文件,如下所示:

  <PropertyGroup>
    <WebAppPackageConfigDir Condition=" '$(WebAppPackageConfigDir)' == '' ">$(MSBuildProjectDirectory)\Package</WebAppPackageConfigDir>
    <ProjectParametersXMLFile>$(WebAppPackageConfigDir)\Parameters.xml</ProjectParametersXMLFile>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

以便在构建 MSDeploy 包时,将其中定义的MSDeploy 参数合并到包中。Web 处理管道(主要在 中定义C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.targets)支持以多种方式自定义 MSDeploy 包 - 例如,包参数可以在文件或 MSBuild 中定义<ItemGroup>

在 SDK 样式的 webapps(例如 ASP.NET Core webapps)中,使用一个“新的”发布管道,例如C\Program Files\dotnet\sdk\2.1.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Publish.targets. 这会根据<PublishProtocol>值引入额外的目标文件,例如C\Program Files\dotnet\sdk\2.1.2\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targetsforPublishProtocol=MSDeploy.\Microsoft.NET.Sdk.Publish.MSDeployPackage.targetsfor PublishProtocol=MSDeployPackage。这两个文件都将_CreateParametersFiles目标定义为:

  <!--
  ***********************************************************************************************
  TARGET : _CreateParameterFiles
  ***********************************************************************************************
 -->

  <Target Name="_CreateParameterFiles">

    <ItemGroup>
      <MsDeployDeclareParameters Remove="@(MsDeployDeclareParameters)" />

      <MsDeployDeclareParameters Include="IIS Web Application …
Run Code Online (Sandbox Code Playgroud)

msdeploy webdeploy msbuild-wpp visual-studio-2017 asp.net-core-2.0

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

Azure Powershell - Az 模块不适用于 Ubuntu 托管的构建代理

我在 Ubuntu 16.04 托管的构建代理上有一个在 Azure DevOps 中运行的构建。我正在使用最新版本的“Azure Powershell”任务(版本 4.* 预览版),它应该是多平台的,支持 Powershell 核心,并支持使用Azure Powershell Az 模块

Azure Powershell 任务版本 4

但是,它并不完全有效。在运行我的任何脚本之前,它会出错:

##[section]Starting: Azure PowerShell script: InlineScript
==============================================================================
Task         : Azure PowerShell
Description  : Run a PowerShell script within an Azure environment
Version      : 4.0.0
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613749)
==============================================================================
##[warning]Can\'t find loc string for key: GeneratingScript
GeneratingScript
[command]/usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command . '/home/vsts/work/_temp/e66222aa-283d-4dfd-b5c1-f1d2a4a3ba9f.ps1'
Could not find the module Az.Accounts with given version. If the module was …
Run Code Online (Sandbox Code Playgroud)

azure-powershell azure-devops azure-devops-hosted-agent

2
推荐指数
1
解决办法
2833
查看次数