我在FSX中创建我的类型,并将这些类型传递到具有开源RazorEngine project的Razor模板引擎。
在ASP.NET之外托管Razor需要编译Razor模板。如果我将在FSX中创建的模型传递给模板,System.CodeDom是否能够访问由FSI创建的那种类型?我得到的基本错误是“无法找到类型或命名空间名称'FSI_0004'。”
答案 0 :(得分:4)
使用System.CodeDom
编译的代码通常无法访问F#Interactive中加载的代码 - CodeDom基本上将C#/ F#源代码写入磁盘,然后在代码上调用命令行编译器(和命令)行编译器不能引用F#Interactive中加载的代码。
可能有办法让它工作 - 您可以使用PowerPack中的F#CodeDom提供程序。您可以修改它以生成源代码(就像当前一样),然后将生成的代码发送到F#Interactive(而不是调用命令行编译器)。这样,即时编译的代码可以看到F#Interactive代码。
有一些问题需要解决
这些都取决于你的情况 - 但我想有可能得到你想要的东西(可能有一些解决方法)。