如何使用ScriptOptions引用外部项目DLL



我有一个项目a,我正在其中编写要使用C#脚本对象内部编译的代码。

我已经在不同的解决方案(外部项目(中创建了另一个项目,项目B;参考文献";列表我想要的是在我想要编译的内部Script代码上添加项目B的引用。为了更好地解释,我的代码如下:

我的"使用语句";是:

APPROVED_USING_STATEMENTS = new HashSet<string>();
APPROVED_USING_STATEMENTS.Add("System.Text");
APPROVED_USING_STATEMENTS.Add("System.Data");
APPROVED_USING_STATEMENTS.Add("System.Text.RegularExpressions");
APPROVED_USING_STATEMENTS.Add("System");
APPROVED_USING_STATEMENTS.Add("System.Linq");
APPROVED_USING_STATEMENTS.Add("System.Collections");
APPROVED_USING_STATEMENTS.Add("System.Security.Cryptography");
APPROVED_USING_STATEMENTS.Add("Project.ProjectB");

编译器代码如下:

foreach (var apprvUsingStatements in DataTransformationScript.GetApprovedUsingStatements())
{
usingStatements.Append("using " + apprvUsingStatements + "; n");
}

string transformCode = usingStatements.ToString();
transformCode += "object returnObject = currentData;";
transformCode += schemaMap.transform_script;
transformCode += ";returnObject";
ScriptOptions references = ScriptOptions.Default.AddReferences(DataTransformationScript.GetApprovedUsingStatements());
//Adding my own personal references from Connector
var asm = typeof(Project.ProjectB.TestTransformation).Assembly;
references.AddReferences(asm);
//HTMLEncodeLogMessage.Info(Logger, "Assmebly added: " + asm.FullName + " Location " + asm.Location + " Given Name " + asm.GetName().Name);
//===============================================//
var transformScript = CSharpScript.Create(transformCode, references, globalsType: typeof(DataTransformationScript.Globals));
transformScript.Compile();

正如你所看到的,我使用以下代码摘录添加了对项目B的引用:

var asm = typeof(Project.ProjectB.TestTransformation).Assembly;
references.AddReferences(asm);

我已经有了上面对项目的使用声明作为";使用Project.ProjectB";。(TestTransformation只是ProjectB中的一个方法。似乎我也不得不使用方法名称来获取引用dll。

我仍然收到一个错误:找不到类型或命名空间名称"Project"(是否缺少using指令或程序集引用?(。

我是否遗漏了其他需要添加的参考资料?我注意到我并没有因为所有的";系统";我有参考资料。C#脚本对象是否可能只从C:\Windows\assembly内的文件夹中获取数据?

我研究了以下stackoverflow问题,但它并没有解决我的问题:链接

我非常感谢任何形式的指导和帮助。我还在学习。

尝试使用costura-fody/fody库

最新更新