我正在使用Roslyn CodeAnalysis API编译一个C#项目,如下面的snipet:
...
EmitResult emitResult = null;
using (FileStream outputFileStream = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
emitResult = compilation.Emit(outputFileStream, null);
}
...
Run Code Online (Sandbox Code Playgroud)
这非常有效.但是,当我想编译包含App.Config文件的可执行项目时,此文件不会在输出目录中发出(类似于通过Visual Studio编译时的方式),如果要解析某些文件,则会出现问题在运行时从该文件配置.
我意识到它不应该默认发出,但我可能需要启用一些选项,或以某种方式从Project对象中提取App.Config路径并自己发出它?我似乎无法找到任何有关此信息,Project类似乎没有包含任何有关配置文件的信息(除非我遗漏了一些东西).
我需要使用一些特定的API来实现上述目标吗?是否有指向现有代码的指针?
非常感谢!
Roslyn不是一个构建系统,它是一个编译器.它只能将代码转换为程序集(和PDB)..csproj在Visual Studio中编译时,MSBuild会读取项目文件中的所有属性和项目,并将它们转换为一系列步骤,其中包括调用Roslyn编译器,将App.config文件复制到输出目录,复制引用等.
虽然Roslyn可以读取MSBuild项目文件,但它仅将此信息用于编译目的,例如查找引用.
因此,如果您正在动态编译程序集,则必须App.config自己复制文件(注意 - VS不会发出此文件 - 它只是复制并重命名它).
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |