在Visual Studio 2015 Preview中,您可以从三个目标F#运行时中进行选择:
定位新版本有什么好处吗?他们是否允许您访问其他API?如果是这样,哪些?如果我们能够生成一份全面的清单,那就太好了.
我的F#类型提供程序似乎没有工作,除非它的所有依赖项都在同一个文件夹中.这对于通过nuget分发类型提供程序不起作用.有关如何解决此问题的任何建议?
我会得到如下错误:错误FS3033:类型提供程序'Froto.Gen.ProtoTypeProvider'报告错误:无法加载文件或程序集'Froto.Roslyn,Version = 0.0.0.1,Culture = neutral,PublicKeyToken = null'或其中一个依赖项.该系统找不到指定的文件.
类型提供程序在此库中:packages\Froto.Gen.0.0.0.1\lib \net45\Froto.Gen.dll
依赖项都在项目中.如果我将它们全部复制到packages\Froto.Gen.0.0.0.1\lib \net45 \中,则类型提供程序可以正常工作.
2012-11-19更新:我今天将创建一个NuGet包来更好地解释问题.
在Windows上使用Git,我想确保存储库中的规范化行结尾,并且工作目录中没有转换?
我们现在使用.gitattributes文件* text=auto
来确保Git存储库已规范化.使用.gitattributes文件时,存储库中的所有文本文件都存储为LF.那样就好.问题是当它们被写出到工作目录时,它正在将行结尾更改为core.eol,即使我们没有core.autocrlf=true
.使用.gitattributes时,它应该具有与写入工作目录时不使用.gitattributes相同的行为.它应该仅在更改行结尾时core.autocrlf=true
.我会提交一个错误.标记为红色是我认为应该改变的行为.
在我的用例中,我正在构建服务器上,包括TeamCity和Visual Studio Online,并且无法设置core.autocrlf=input
.我将使用开源F#编译器作为示例.该项目使用* text=auto
并未*.fs text eol=lf
在其.gitattributes中指定.如果从GitHub存储库下载il.fs,则行结尾为LF.当它们由构建服务器签出时,它们是CRLF.这意味着校验和不匹配,并且使用SourceLink进行源索引不起作用.
作为一种解决方法,我建议我们*.fs text eol=lf
在.gitattributes文件中设置.不是每个人都对此感到满意.
此外,有1500个声望点的人可以将此标记为"sourcelink".
我正在使用Update 1运行最新的Visual Studio 2013 Ultimate.我们还拥有最新的Team Foundation Server 2013.我们中的一些人对新的Git存储库集成感到非常兴奋,但似乎有一个非常大的限制.我们希望将多个Git存储库添加到单个团队项目中,并且能够从Visual Studio 2013访问构建和工作项.它目前仅在您的Git存储库的名称与团队项目相同时才有效.
这也是Visual Studio Online的限制.我的开源SourceLink项目仅在Visual Studio 2013中显示工作项和构建,因为我已将远程VSO存储库命名origin
,Team Project和Git Repository都命名为SourceLink.
Visual Studio 2013 Update 2 CTP 2看起来有一些不错的Git更新,但是,我没有看到任何关于此的内容.有没有计划解决这个问题?我们希望能够从团队项目中的每个Git存储库访问工作项和构建.
使用 Cargo 时如何让 ld 链接器变得冗长?我已经试过几件事情中.cargo/config
,但没有运气。正确的设置是什么?直接使用 gcc 时,我可以只做-Wl,--verbose
.
[build]
rustflags = [
"-C", "prefer-dynamic",
# "-Z", "pre-link-arg=-pthread",
"-C", "link-arg=-pthread",
"-C", "link-arg=-fopenmp",
# "-C", "link-arg=-LC:/Octave/Octave-4.2.1/lib64/gcc/x86_64-w64-mingw32/4.9.4",
# "-C", "link-arg=--sysroot=C:/Octave/Octave-4.2.1",
# "-Z", "pre-link-args=-LC:/Octave/Octave-4.2.1/lib",
# "-Z", "pre-link-args=-LC:\\Octave\\Octave-4.2.1\\lib",
# "-C", "link-arg=--verbose",
# "-C", "link-arg=-v",
# "-C", "link-arg=-Wl,--verbose",
# "-Z", "print-link-args",
]
[target.x86_64-pc-windows-gnu]
linker = "C:/Octave/Octave-4.2.1/bin/gcc.exe"
# rustflags = [
# "-C", "link-arg=-Wl,--verbose",
# ]
# [term]
# verbose = true
Run Code Online (Sandbox Code Playgroud)
mexPrintf
就像printf
,接受一个varargs参数列表,但我不知道在Rust中包装它的最佳方法是什么.有一个可变参数泛型的RFC,但我们今天能做些什么呢?
在这个例子中,我想打印输入和输出的数量,但包装函数只打印垃圾.知道如何解决这个问题吗?
#![allow(non_snake_case)]
#![allow(unused_variables)]
extern crate mex_sys;
use mex_sys::mxArray;
use std::ffi::CString;
use std::os::raw::c_int;
use std::os::raw::c_void;
type VarArgs = *mut c_void;
// attempt to wrap mex_sys::mexPrintf
fn mexPrintf(fmt: &str, args: VarArgs) {
let cs = CString::new(fmt).unwrap();
unsafe {
mex_sys::mexPrintf(cs.as_ptr(), args);
}
}
#[no_mangle]
pub extern "system" fn mexFunction(
nlhs: c_int,
plhs: *mut *mut mxArray,
nrhs: c_int,
prhs: *mut *mut mxArray,
) {
let hw = CString::new("hello world\n").unwrap();
unsafe {
mex_sys::mexPrintf(hw.as_ptr());
}
let inout = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Rust中构建Octave函数.Octave的API是用C++编写的,所以我使用了rust-bindgen生成了绑定.我正在解决尝试生成包含的绑定std::string
时出现的问题.如果我可以将它指向C++的std::string
不透明和有效指针,那将是很好的.我是否可以在需要传递C++时在C++端构建实用程序功能std::string
?
当我第一次尝试这个时,我很天真.这显然是错误的.Rust std::ffi:CString
用于C字符串,而不是C++字符串.我发现这篇最近的博客在比较两者时很有帮助.我的第一次尝试看起来像这样:
#![allow(non_snake_case)]
#![allow(unused_variables)]
extern crate octh;
// https://thefullsnack.com/en/string-ffi-rust.html
use std::ffi::CString;
#[no_mangle]
pub unsafe extern "C" fn Ghelloworld (shl: *const octh::root::octave::dynamic_library, relative: bool) -> *mut octh::root::octave_dld_function {
let name = CString::new("helloworld").unwrap();
let pname = name.as_ptr() as *const octh::root::std::string;
std::mem::forget(pname);
let doc = CString::new("Hello World Help String").unwrap();
let pdoc = doc.as_ptr() as *const octh::root::std::string;
std::mem::forget(pdoc);
octh::root::octave_dld_function_create(Some(Fhelloworld), shl, pname, pdoc)
}
pub unsafe extern "C" fn Fhelloworld (args: …
Run Code Online (Sandbox Code Playgroud) 几周前,我在Twitter上问了这个问题,然后花了几个周末的时间解决这个问题。我想在将新标签推送到github.com时触发构建。大多数其他CI服务都具有此功能,但是我不知道如何为Azure Pipelines启用它。我试图加入trigger
的refs/tags/*
中azure-pipelines.yaml
和在那里你可以重写触发器的UI。都没有为我工作。
我在 Kubernetes 环境中使用https://github.com/jetstack/cert-manager自动加载https://letsencrypt.org/。它创建的证书将在 90 天后过期。在到期前30 天,cert-manager 更新证书并替换证书。证书存储在 k8s 机密中。
你如何让 Envoy Proxy自动重新加载证书?这些问题已关闭,似乎没有答案。有人提到可以帮助提供解决方案的 Secret Discovery Service (SDS),但我还没有弄清楚。
对于 nginx,可以通过将 k8s 机密添加到 k8s 卷,将卷挂载到文件系统以供 nginx 使用来配置 TLS。然后可以使用文件系统观察程序调用sudo nginx -s reload以在证书更改时重新加载配置。我看到 Envoy Proxy 支持hot restart,但我没有看到类似于 nginx 的命令来让它热重启。
有一个hot-restarter.py,但它不是文件观察器,我宁愿不在 envoyproxy/envoy:latest docker 镜像上安装 python。我认为该程序的某些功能可能会内置到一个也可以查看文件的 Rust 应用程序中,但是对于这种非常常见的场景,必须已经存在一些东西,对吧?
切换到新标准UUID BinData子类型4有什么性能优势吗?我们的大部分藏品被设置为使用GuidRepresenation.CSharpLegacy
这是默认为C#的驱动程序.如果我设定Mongo.Bson.BsonDefaults.GuidPresenation = Mongo.Bson.GuidRepresentation.Standard
,它会有利于性能吗?还假设我们将所有现有数据转换为使用标准子类型.
rust ×3
azure-devops ×2
f# ×2
git ×2
c++ ×1
cert-manager ×1
envoyproxy ×1
ffi ×1
interop ×1
lets-encrypt ×1
mongodb ×1
nuget ×1
rust-cargo ×1
ssl ×1
string ×1
tfs2013 ×1