由于IIS8功能称为HttpPlatformHandler ,因此可以在Azure Web Apps上运行suave.io应用程序.我尝试以相同的方式运行自托管的OWIN应用程序,但在启动时遇到异常:
Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.HttpListenerException: Access is denied
at System.Net.HttpListener.SetupV2Config()
at System.Net.HttpListener.Start()
at Microsoft.Owin.Host.HttpListener.OwinHttpListener.Start(HttpListener listener, Func`2 appFunc, IList`1 addresses, IDictionary`2 capabilities, Func`2 loggerFactory)
at Microsoft.Owin.Host.HttpListener.OwinServerFactory.Create(Func`2 app, IDictionary`2 properties)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] …
Run Code Online (Sandbox Code Playgroud) 我们正在尝试使用a IEnumerable
作为工厂,每次迭代时都会生成不同的对象.那些应该尽快GC.但请注意,我们保留对枚举器的引用,以便我们可以再次调用它.所以我们的程序基本上是这样的:
public class YieldSpec
{
public static IEnumerable<string> Strings()
{
yield return "AAA";
yield return "BBB";
yield return "CCC";
}
public void YieldShouldAllowGC()
{
var e = Strings();
foreach (var a in e)
{
Console.WriteLine(a);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在调试器中查看该代码:
您可以看到,当遇到断点时,IEnumerable会引用"CCC".
这不应该真的发生.IEnumerable应该只在调用GetEnumerator时生成IEnumerator.这是IEnumerable可以包含状态的预期行为吗?
当我B
从分支创建一个新分支A
并执行单个提交时,TeamCity会触发多个构建B
,尽管我只期望一个构建.
我将"在每次签入时触发构建"设置为true,但是应该只有一个构建,因为只有一个新的提交.似乎TeamCity在当前月份内触发每个提交的构建.A
完成所有分支构建,并使用相同的构建配置来构建分支A
和B
.我是否可以将TeamCity配置为仅针对尚未构建的提交创建构建(无论在哪个分支上)?
我按照这里描述编译了CoreCLR和CoreFX.基本上,我可以编译和运行针对CoreCLR的C#代码.
下一步是尝试编译和运行F#代码.所以我将FSharp.Core 3.1.2.1添加到项目中,并使用以下命令编译了一个示例应用程序:
fsc ^
--noframework ^
--targetprofile:netcore ^
/r:packages\System.Runtime.4.0.20-beta-22703\lib\contract\System.Runtime.dll ^
/r:packages\System.Reflection.4.0.10-beta-22703\lib\contract\System.Reflection.dll ^
/r:packages\System.Collections.4.0.10-beta-22703\lib\contract\System.Collections.dll ^
/r:packages\System.Diagnostics.Debug.4.0.10-beta-22703\lib\contract\System.Diagnostics.Debug.dll ^
/r:packages\System.IO.FileSystem.4.0.0-beta-22703\lib\contract\System.IO.FileSystem.dll ^
/r:packages\System.Linq.Expressions.4.0.10-beta-22703\lib\contract\System.Linq.Expressions.dll ^
/r:packages\System.Console.4.0.0-beta-22703\lib\contract\System.Console.dll ^
/r:packages\System.Runtime.Extensions.4.0.10-beta-22703\lib\contract\System.Runtime.Extensions.dll ^
/r:packages\System.Runtime.InteropServices.4.0.20-beta-22703\lib\contract\System.Runtime.InteropServices.dll ^
/r:packages\System.Text.Encoding.4.0.10-beta-22703\lib\contract\System.Text.Encoding.dll ^
/r:packages\System.Text.RegularExpressions.4.0.10-beta-22703\lib\contract\System.Text.RegularExpressions.dll ^
/r:packages\System.Threading.Overlapped.4.0.0-beta-22703\lib\contract\System.Threading.Overlapped.dll ^
/r:packages\System.Threading.ThreadPool.4.0.10-beta-22703\lib\contract\System.Threading.ThreadPool.dll ^
/r:packages\FSharp.Core.3.1.2.1\lib\portable-net45+netcore45+MonoAndroid1+MonoTouch1\FSharp.Core.dll ^
/out:runtime\HelloWorld.exe HelloWorld.fs
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我构建了FSharp.Core的Profile7.当我运行应用程序时,语句let test = sprintf "Hello, world"
失败并出现以下异常:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the …
Run Code Online (Sandbox Code Playgroud) 我正在努力将以下事件转换为IObservable
:
public delegate void _dispSolutionEvents_OpenedEventHandler();
event _dispSolutionEvents_OpenedEventHandler Opened;
Run Code Online (Sandbox Code Playgroud)
该活动来自图书馆,所以我无法改变它.IObservable.FromEvent
应该做的重载具有以下签名:
public static IObservable<Unit> FromEvent
( Action<Action> addHandler
, Action<Action> removeHandler
)
Run Code Online (Sandbox Code Playgroud)
所以我尝试转换这样的事件:
var opened = Observable.FromEvent
( h => _SolutionEvents.Opened += h
, h => _SolutionEvents.Opened -= h
);
Run Code Online (Sandbox Code Playgroud)
但是编译器并不喜欢_SolutionEvents.Opened += h
和_SolutionEvents.Opened += h
因为
无法将类型'System.Action'隐式转换为'EnvDTE._dispSolutionEvents_OpenedEventHandler'.
我不认为我可以说,_SolutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(h)
因为那时删除不起作用,因为我有一个不同的实例,对吧?
还有另一个Observable.FromEvent
带有以下签名的重载:
public static IObservable<TEventArgs> FromEvent<TDelegate, TEventArgs>
( Func<Action<TEventArgs>, TDelegate> conversion
, Action<TDelegate> addHandler
, Action<TDelegate> removeHandler
)
Run Code Online (Sandbox Code Playgroud)
这个允许将操作转换为事件处理程序,但似乎只能使用TEventArgs
. …
我试图理解读者单子转换器。我正在使用FSharpPlus并尝试编译以下示例,该示例首先从阅读器环境中读取某些内容,然后执行一些异步计算,最后合并两个结果:
open FSharpPlus
open FSharpPlus.Data
let sampleReader = monad {
let! value = ask
return value * 2
}
let sampleWorkflow = monad {
do! Async.Sleep 5000
return 4
}
let doWork = monad {
let! envValue = sampleReader
let! workValue = liftAsync sampleWorkflow
return envValue + workValue
}
ReaderT.run doWork 3 |> Async.RunSynchronously |> printfn "Result: %d"
Run Code Online (Sandbox Code Playgroud)
有了这个,我在它显示的行出现编译错误,let! value = ask
并显示以下完全无用的(至少对我来说)错误消息:
将默认类型“obj”应用于类型推断变量时,类型约束不匹配。没有与方法“op_GreaterGreaterEquals”匹配的重载。
已知返回类型:异步
已知类型参数:< obj , (int -> Async) >
感觉就像我只是在某个地方缺少一些操作员,但我无法弄清楚。
我想Version
在F#中对一系列对象进行排序:
let maxVersion =
versions
|> Seq.max (fun version -> version)
Run Code Online (Sandbox Code Playgroud)
编译器生成以下错误消息:
类型'(seq - >'a)'不支持'比较'约束.例如,它不支持"System.IComparable"接口
当我在Visual Studio中点击F12来查看Version
它的元数据时说Version
它只实现了ICloneable
,但没有实现IComparable
.但是,当我访问sourceof.net时,它表示它实现的功能IComparable
与其他一些接口一样.
F#是否使用不同版本的.NET框架?