在为F#脚本文件创建签名文件时遇到错误,我无法解决这个问题.
要复制,请创建一个新的F#类库并添加一个文件Test.fs:
namespace Signatures
open System
type Test (id : Guid, name : string) =
member this.Id = id
member this.Name = name
Run Code Online (Sandbox Code Playgroud)
这将很好.然后在它上面创建一个新的签名文件Test.fsi:
namespace Signatures
open System
type Test =
new : (Guid * String) -> Test
member Id : Guid
member Name : String
Run Code Online (Sandbox Code Playgroud)
现在这不会构建错误Module 'Signatures' requires a value 'new : (Guid * String) -> Test(这与两个文件中构造函数签名不同时所获得的错误不同).我在签名文件中定义构造函数时可以找到的唯一真实文档是MSDN,它处理无参数构造函数.
如果将鼠标悬停在.fs文件中的Test上,则构造函数的签名与.fsi文件中的签名匹配.我也尝试过更改构造函数,这样就不会隐藏任何快乐.
我正在使用VS2012 RC,并尝试过.Net 4和4.5.
我对PowerShell DSC相当新,对此的回答可能非常明显,但我找不到任何地方描述的类似问题.
我有一个PowerShell DSC复合资源,可以下载一些MSI并运行它们.下载文件的目录在几个地方被引用,所以我试图将它存储在一个变量中.但是,当我来应用使用此资源的配置时,Start-DscConfiguration值始终显示为null.
以下是资源的示例:
Configuration xExample {
Import-Module -ModuleName 'PSDesiredStateConfiguration'
$path = 'C:\Temp\Installer.msi'
Script Download {
SetScript = {
Invoke-WebRequest -Uri "..." -OutFile $path
}
GetScript = {
@{
Result = $(Test-Path $path)
}
}
TestScript = {
Write-Verbose "Testing $($path)"
Test-Path $path
}
}
}
Run Code Online (Sandbox Code Playgroud)
当执行此资源时,详细输出显示"Testing",并且Test-Path由于Path参数为null ,调用失败.
我已经尝试$path在配置之外声明变量并且使用$global无效.
我错过了什么?
我正在使用FsUnit在F#中编写一些单元测试,我注意到属性周围有一些奇怪的行为,并且在类型成员中使用语句,并且想知道是否有人可以解释它?
如果我写这样的测试:
[<Fact>] member test.
``Test that something works correctly`` () =
let x = 1
x + 2 |> should equal 3
Run Code Online (Sandbox Code Playgroud)
我将在'x + 2'行的第一个字符的Visual Studio 2012中出错:
表达式中出现意外的关键字"let"或"use".预期'in'或其他标记.
使用'let ... in'可以解决此错误,但如果您想使用多个错误,请让它快速变得混乱:
[<Fact>] member test.
``Test that something works correctly`` () =
let x = 1
in x + 2 |> should equal 3
Run Code Online (Sandbox Code Playgroud)
我最终发现将属性放在一个单独的行上也可以解决错误:
[<Fact>]
member test.
``Test that something works correctly`` () =
let x = 1
x + 2 |> should equal 3
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供任何有关第一个代码段导致错误但其他两个不导致错误的信息吗?