小编dnf*_*dnf的帖子

如何调试从Roslyn编译生成的DLL?

我正在使用Roslyn CSharpCompilation为我的插件生成dll文件 - 文件包含OptimizationLevel.Debug并生成pdb文件.接下来我使用Assembly.Load将这些文件加载​​到我的程序(UWP + .NET Standard 2.0库)并创建我感兴趣的类型的实例.我的问题是我无法获得Visual Studio(版本2017 15.7. 3)在我调试时找到源代码 - 它正在像外部库一样踩踏它,所以当异常被抛入里面时我无法找到它.我已经厌倦了在stackoverflow上搜索解决方案,但所有解决方案都无法正常工作.我检查过这个:

  • 生成Pdb
  • VS中的模块窗口显示已加载符号
  • 尝试了不同版本的Assembly Load/LoadFrom
  • 在调试选项中设置"使用托管兼容模式"

有没有办法让文件可调试?也许在编译或改变VS中的某些东西时我必须使用一些roslyn选项?

c# debugging roslyn visual-studio-2017

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

无效的“可空”值:C# 7.3 的“启用”

我有几个 .NET Standard 项目的解决方案,我想启用 c# 8 并且可以为空,如下所示:

<PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

问题是有些项目编译得很好,有些有错误:

无效的“可空”值:C# 7.3 的“启用”。请使用语言版本“预览”或更高版本

我有 Visual Studio 16.2 Preview 2 和 .NET Core 3 Preview 6。这是预览中的错误还是我做错了什么?

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

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

*.targets无法再次导入.它已经导入了

我在VS 2017中构建了UWP应用程序,并且我的解决方案中的许多项目都构建了如下警告.如何摆脱它们?

警告"C:\ Program Files(x86)\ MSBuild\15.0.Net\CoreRuntime\Microsoft.Net.CoreRuntime.targets"无法再次导入.它已经导入"C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Community\MSBuild\15.0\Microsoft.Common.targets\ImportAfter\Microsoft.Net.CoreRuntime.ImportAfter.targets(17,3)" .这很可能是构建创作错误.此后续导入将被忽略.[D:\ Projects\HA4IoT\Controllers\HA4IoT.Controller\HA4IoT.Service.csproj] HA4IoT.Tests
警告"C:\ Program Files(x86)\ MSBuild\15.0.Net\CoreRuntime\Microsoft.Net.CoreRuntime.Settings.目标"无法再次导入.它已导入"C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Community\MSBuild\15.0\Microsoft.Common.targets\ImportBefore\Microsoft.Net.CoreRuntime.ImportBefore.targets(17,3)" .这很可能是构建创作错误.此后续导入将被忽略.[D:\ Projects\HA4IoT\DNF\HA4IoT.Extensions.Tests\HA4IoT.Extensions.Tests.csproj] HA4IoT.Controller.Dnf
警告"C:\ Users\dnf.nuget\packages\microsoft.net.native.compiler\1.6.3\tools\Microsoft.NetNative.targets"无法再次导入.它已经导入"C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Community\MSBuild\15.0\Microsoft.Common.targets\ImportAfter\Microsoft.NetNative.ImportAfter.targets(16,3)".这很可能是构建创作错误.此后续导入将被忽略.[D:\ Projects\HA4IoT\Controllers\Examples\HA4IoT.Controller.Main\HA4IoT.Controller.Main.csproj] HA4IoT.Controller.Main

msbuild uwp visual-studio-2017

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

如何为breeze实体生成typescript接口/定义

我是SPA的新手,我正在学习durandal和微风.最近我将我的解决方案转换为Typescript,我想知道是否有任何好的解决方案可以在服务器上基于EF模型在TypeScript中生成类型化的breeze实体.我发现的唯一的东西是这个帖子Breeze.js键入的实体,但这只是一小段代码,甚至不是一个真正的项目.我想知道这个问题有更好的解决方案吗?

entity-framework knockout.js typescript breeze durandal

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

Simple Injector中的异步工厂

我正在配置Quartz库以使用Simple Injector,我有正确注册它的问题.问题是,GetScheduler()是异步这个代码注册Task<IScheduler>IScheduler

 container.Register(async () =>
 {
      return await container.GetInstance<ISchedulerFactory>().GetScheduler();
 });
Run Code Online (Sandbox Code Playgroud)

如何在Simple Injector中注册异步的工厂方法?当然,我可以等使用效果ResultTask,但也许还有其他办法吗?

c# factory quartz.net async-await simple-injector

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

使用 Roslyn 从编译中获取所有类型?

我试图根据以下代码创建的 Roslyn 编译中的某些标准获取所有类型:

var syntaxTrees = new[] 
{ 
      CSharpSyntaxTree.ParseText(source, new CSharpParseOptions(LanguageVersion.Preview)) 
};

// Add some references
references.Add(MetadataReference.CreateFromFile(...));
            
// Create compilation
var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
var compilation = CSharpCompilation.Create(nameof(GeneratorRunner), syntaxTrees, references, options);

return compilation;
Run Code Online (Sandbox Code Playgroud)

然后我使用这段代码来搜索类型

compilation.GetTypeByMetadataName("HomeCenter.Messages.Commands.Device.AdjustPowerLevelCommand");
compilation.GetSymbolsWithName(x => true, SymbolFilter.Type).ToList();
Run Code Online (Sandbox Code Playgroud)

这对我来说很奇怪 - GetSymbolsWithName 仅返回在我的源中定义的类型,而不是在引用的程序集中定义的类型,但 GetTypeByMetadataName 能够返回有关类型的信息,即使它是在引用程序集中定义的。问题是我正在尝试搜索编译中的所有类型,所以我不知道确切的名称。问题是如何搜索应用程序在源中以及引用的程序集中具有的所有类型?还有其他与名称相反的过滤选项吗 - 我对从特定类型继承的所有类型感兴趣,以便可以以各种方式命名它们。

c# roslyn .net-core

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

Rx – 与超时不同?

我想知道是否有任何方法可以在 .NET 的 Reactive Extensions 中实现 Distinct,使其在给定的时间内工作,并且在此之后它应该重置并允许再次返回值。我需要这个应用程序中的热源,该应用程序将全年工作,现在停止,所以我担心性能,我需要在一段时间后允许这些值。还有 DistinctUntilChanged 但在我的情况下,值可以混合 - 例如:AAXA,DistinctUntilChanged 会给我 AXA,我需要结果 AX,并且在给定时间后应该重置 distinct。

.net c# timeout distinct system.reactive

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