.net Regex.CompileToAssembly如何设置.dll文件位置

.net Regex.CompileToAssembly如何设置.dll文件位置,.net,regex,f#,.net,Regex,F#,我正在一个.fsx脚本中试验预编译正则表达式。但是我不知道如何为生成的程序集指定.dll文件位置。我尝试在Regex.CompileToAssembly使用的AssemblyName实例上设置属性,如CodeBase,但没有效果。以下是我所拥有的: open System.Text.RegularExpressions let rcis = [| new RegexCompilationInfo( @"^NumericLiteral([QRZING])$",

我正在一个.fsx脚本中试验预编译正则表达式。但是我不知道如何为生成的程序集指定.dll文件位置。我尝试在
Regex.CompileToAssembly
使用的
AssemblyName
实例上设置属性,如
CodeBase
,但没有效果。以下是我所拥有的:

open System.Text.RegularExpressions

let rcis = [|
    new RegexCompilationInfo(
        @"^NumericLiteral([QRZING])$",
        RegexOptions.None,
        "NumericLiteral",
        "Swensen.Unquote.Regex",
        true
    );
|]

let an = new System.Reflection.AssemblyName("Unquote.Regex");
an.CodeBase <- __SOURCE_DIRECTORY__  + "\\" + "Unquote.Regex.dll"
Regex.CompileToAssembly(rcis, an)
但是,再一次,我没有看到我想要的C:\Users\Stephen\Documents\Visual Studio 2010\Projects\Unquote\code\Unquote\Unquote.Regex.dll。如果我在我的C驱动器中搜索Unquote.Regex.dll,我会在某个临时AppData文件夹中找到它


那么,如何正确指定由
Regex.CompileToAssembly
生成的程序集的.dll文件位置?

似乎CompileToAssembly不尊重AssemblyName中的代码库或任何其他属性,而只是将结果程序集保存到当前目录。尝试将System.Environment.CurrentDirectory设置到正确的位置,并在保存后将其还原

open System.Text.RegularExpressions

type Regex with
    static member CompileToAssembly(rcis, an, targetFolder) = 
        let current = System.Environment.CurrentDirectory
        System.Environment.CurrentDirectory <- targetFolder
        try
            Regex.CompileToAssembly(rcis, an)
        finally
            System.Environment.CurrentDirectory <- current


let rcis = [|
    new RegexCompilationInfo(
        @"^NumericLiteral([QRZING])$",
        RegexOptions.None,
        "NumericLiteral",
        "Swensen.Unquote.Regex",
        true
    );
|]

let an = new System.Reflection.AssemblyName("Unquote.Regex");
Regex.CompileToAssembly(rcis, an, __SOURCE_DIRECTORY__)
open System.Text.regular表达式
使用
静态成员编译器程序集(rcis、an、targetFolder)=
让current=System.Environment.CurrentDirectory

System.Environment.CurrentDirectoryCompileToAssembly似乎不尊重AssemblyName中的CodeBase或任何其他属性,而只是将结果程序集保存到当前目录。尝试将System.Environment.CurrentDirectory设置到正确的位置,并在保存后将其还原

open System.Text.RegularExpressions

type Regex with
    static member CompileToAssembly(rcis, an, targetFolder) = 
        let current = System.Environment.CurrentDirectory
        System.Environment.CurrentDirectory <- targetFolder
        try
            Regex.CompileToAssembly(rcis, an)
        finally
            System.Environment.CurrentDirectory <- current


let rcis = [|
    new RegexCompilationInfo(
        @"^NumericLiteral([QRZING])$",
        RegexOptions.None,
        "NumericLiteral",
        "Swensen.Unquote.Regex",
        true
    );
|]

let an = new System.Reflection.AssemblyName("Unquote.Regex");
Regex.CompileToAssembly(rcis, an, __SOURCE_DIRECTORY__)
open System.Text.regular表达式
使用
静态成员编译器程序集(rcis、an、targetFolder)=
让current=System.Environment.CurrentDirectory
System.Environment.CurrentDirectory