如果我使用程序集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中的类型提供程序.我的猜测是它们是擦除类型而不是生成类型.我仍然有点模糊,但是它在这里被定义为:
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#类型提供商看起来像一项伟大的技术,但我们需要帮助构建它们.任何帮助表示赞赏.
.NET Framework 4.5.1没有很多API添加.除了访问这些API的增加,是没有任何理由的目标 4.5.1,而不是4.5施工吗?只需使用新的Runtime即可获得所有4.5.1 .NET运行时性能优势,对吗?
我想出了.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中引用的源文件的校验和?
我正在开发一个使用 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 或任何其他高度可配置的非直接依赖项的功能?
我将AWS CodeBuild设置为从GitHub自动构建.其他CI服务为分支提供环境变量,但我找不到AWS CodeBuild的环境变量.有一种CODEBUILD_SOURCE_VERSION
被设置为pr/7
其中7
的上拉请求号码或git的承诺SHA.
鉴于提交sha,我一直试图获得分支名称,但到目前为止没有运气.
git branch --contains <commitsha>
不起作用,因为它是一个独立的头.如何从CodeBuild获取提交的git分支?
我正在研究一个依赖于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#Generative Type Provider的程序集中创建的任何类型时遇到问题.我创建了一个YouTube视频来演示这一点.
我得到的错误消息是:
我不明白,因为类型绝对是在程序集中.为了解决这个问题,程序集是一个非常基本的C#dll.视频中的代码可通过git获得:
git url:https://code.google.com/p/froto/
git branch:help
我们将不胜感激.我希望在.proto文件的F#Type Provider上取得更多进展,但我坚持这一点.
我想使用抽象语法树为.fs文件生成F#代码.我能够使用Roslyn API生成.cs文件.这是一个示例riak.cs文件,单元测试基于riak.proto生成.我想在F#中做同样的事情.我还不想创建一个类型提供者.有没有人有任何使用FSharp.Compiler.Service的例子,可能与Fantomas一起使用?
使用VS Code的新远程SSH功能,如何修改PATH
其终端的环境变量?我已经进入了Ubuntu 16.04 VM,它没有启动/etc/profile
或启动~/.bash_profile
。
打开终端后,我可以. ~/.bash_profile
,但是我希望类似的事情自动发生。