小编Cam*_*art的帖子

如何创建可以在C#中使用的F#类型提供程序?

如果我使用程序集FSharp.Data.TypeProviders 4.3.0.0中的F#Type Providers,我可以在一个非常简单的F#库中创建类型.然后,我可以使用这些类型而不依赖于程序集FSharp.Data.TypeProviders.那太可爱了!这是一个例子:

我创建了一个名为TryTypeProviders的F#库项目.我把它放在.fs中:

module TryTypeProviders
type Northwind = Microsoft.FSharp.Data.TypeProviders.ODataService
Run Code Online (Sandbox Code Playgroud)

然后我就可以使用C#项目中的F#库了:

public static void Main()
{
    var c = new TryTypeProviders.Northwind();
    foreach (var cust in c.Customers)
        Console.WriteLine("Customer is: " + cust.ContactName);
    Console.ReadKey(true);
}
Run Code Online (Sandbox Code Playgroud)

我还没有找到任何有关如何创建这样的类型提供程序的工作示例.无法从C#访问FSharpx.TypeProviders中的类型提供程序.我的猜测是它们是擦除类型而不是生成类型.我仍然有点模糊,但是它在这里定义为:

  1. 生成的类型是嵌入到使用类型提供程序的程序集中的真实.NET类型(这是包装代码生成工具的类型提供程序,如sqlmetal使用)
  2. 擦除类型是模拟类型,在编译代码时由其他类型表示.

MSDN 教程中提到的F#3.0示例包中的示例对我不起作用.他们建立,但当我尝试使用它时,我得到错误.

open Samples.FSharp.RegexTypeProvider
type PhoneNumberRegEx = CheckedRegexProvider< @"(?<AreaCode>^\d{3})-(?<PhoneNumber>\d{3}-\d{4}$)">
Run Code Online (Sandbox Code Playgroud)
open Samples.FSharp.MiniCsvProvider
type csv = MiniCsvProvider<"a.csv">
Run Code Online (Sandbox Code Playgroud)

它最后一次发布于2011年3月,我的猜测是它们还没有反映Visual Studio 2012附带的类型提供程序的最终版本.

F#类型提供商看起来像一项伟大的技术,但我们需要帮助构建它们.任何帮助表示赞赏.

f# type-providers

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

针对.NET Framework 4.5.1而不是4.5的任何好处?

.NET Framework 4.5.1没有很多API添加.除了访问这些API的增加,是没有任何理由的目标 4.5.1,而不是4.5施工吗?只需使用新的Runtime即可获得所有4.5.1 .NET运行时性能优势,对吗?

.net

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

Visual Studio如何知道源文件是否与原始版本匹配?

我想出了.NET程序集.dll文件如何使用GUID(博客)映射到.pdb .当我调试到一个程序集并询问源代码时,如果我导航到一个文件,它可能会告诉我源代码与原始代码不同.怎么知道这个?我期望.pdb文件包含每个文件的校验和,但它似乎没有.我发现转储调试信息的最佳工具是dia2dump.C++ .pdb文件有MD5条目,但C#.pdb文件没有.

C++ dump
dia2dump -f dia2dump.pdb> dia2dump.pdb.files.txt

C#dump
dia2dump -f Autofac.pdb> Autofac.pdb.files.txt
dia2dump -all Autofac.pdb> Autofac.pdb.all.txt

我在"全部"转储中错过了什么?

它必须使用校验和.如果我在Module.cs中更改单个字符,我会得到:
在此输入图像描述

在哪里可以找到.pdb中引用的源文件的校验和?

c# .net-assembly visual-studio-debugging pdb-files

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

如何为 Cargo 中的子依赖项指定功能?

我正在开发一个使用 reqwest 和 self_update 的 CLI 应用程序。self_update 也使用 reqwest。我希望我的应用程序使用 rustls 而不是引入 openssl 依赖项。Cargo.toml 允许选择依赖项的功能:

[dependencies.reqwest]
version = "0.10"
default-features = false
features = ["rustls-tls", "json", "blocking"]
Run Code Online (Sandbox Code Playgroud)

如果子依赖项有效的话那就太酷了:

[dependencies.self_update.reqwest]
version = "0.10"
default-features = false
features = ["rustls-tls", "json", "blocking"]
Run Code Online (Sandbox Code Playgroud)

我还查看了替换部分,但只有这样的东西才适用于我分支代码的地方:

"reqwest:0.10.1" = { branch = "rustls", git = "https://github.com/ctaggart/reqwest" }
Run Code Online (Sandbox Code Playgroud)

但我想要的是默认功能和支持的功能:

"reqwest:0.10.1" = { tag="v0.10.1", git = "https://github.com/seanmonstar/reqwest", default-features = false, features = ["rustls-tls", "json", "blocking"] }
Run Code Online (Sandbox Code Playgroud)

如何使用 Cargo 配置 Reqwest 或 Tokio 或任何其他高度可配置的非直接依赖项的功能?

rust rust-cargo

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

获取AWS CodeBuild的GitHub git分支

我将AWS CodeBuild设置为从GitHub自动构建.其他CI服务为分支提供环境变量,但我找不到AWS CodeBuild的环境变量.有一种CODEBUILD_SOURCE_VERSION被设置为pr/7其中7的上拉请求号码或git的承诺SHA.

鉴于提交sha,我一直试图获得分支名称,但到目前为止没有运气.

git branch --contains <commitsha>不起作用,因为它是一个独立的头.如何从CodeBuild获取提交的git分支?

git amazon-web-services aws-codebuild

13
推荐指数
4
解决办法
6432
查看次数


对于F#类型提供程序,如何为依赖程序集执行绑定重定向?

我正在研究一个依赖于FParsec 0.9.2.0的F#Type Provider.它取决于FSharp.Core 4.0.0.0.当我尝试使用F#Type Provider时,出现此错误:

{"无法加载文件或程序集'FSharp.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个依赖项.系统找不到指定的文件.":"FSharp.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"}

===预绑定状态信息===
日志:DisplayName = FSharp.Core,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a(完全指定)
LOG:Appbase = file:/// C:/ Program文件(x86)/ Microsoft Visual Studio 11.0/Common7/IDE/
LOG:初始PrivatePath = NULL
调用程序集:FParsec,Version = 0.9.2.0,Culture = neutral,PublicKeyToken = e5c8267bb3bd1265.

我尝试添加a Froto.Gen.dll.config和a FParsec.dll.config,两者都有这个:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)

没运气.有任何想法吗?我的下一个行动计划是建立一个新的FParsec.dll,但这并不总是有用.

f# type-providers assembly-binding-redirect

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

如何为生成的程序集创建F#类型提供程序?

我在使用F#Generative Type Provider的程序集中创建的任何类型时遇到问题.我创建了一个YouTube视频来演示这一点.

我得到的错误消息是:

  • 编译单元'Addressbook1'中的模块/命名空间'tutorial'不包含命名空间,模块或类型'Person'
  • 找到了程序集"Addressbook1"中类型"tutorial.Person"的引用,但在该程序集中找不到该类型

我不明白,因为类型绝对是在程序集中.为了解决这个问题,程序集是一个非常基本的C#dll.视频中的代码可通过git获得:

git url:https://code.google.com/p/froto/
git branch:help

我们将不胜感激.我希望在.proto文件的F#Type Provider上取得更多进展,但我坚持这一点.

f# type-providers

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

如何使用AST生成F#代码?

我想使用抽象语法树为.fs文件生成F#代码.我能够使用Roslyn API生成.cs文件.这是一个示例riak.cs文件,单元测试基于riak.proto生成.我想在F#中做同样的事情.我还不想创建一个类型提供者.有没有人有任何使用FSharp.Compiler.Service的例子,可能与Fantomas一起使用

f# abstract-syntax-tree

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

更改VS Code远程SSH的PATH

使用VS Code的新远程SSH功能,如何修改PATH其终端的环境变量?我已经进入了Ubuntu 16.04 VM,它没有启动/etc/profile或启动~/.bash_profile

在此处输入图片说明

打开终端后,我可以. ~/.bash_profile,但是我希望类似的事情自动发生。

visual-studio-code vscode-remote

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