无法加载类型' SAS.LanguageServiceCarriageControl'来自议会

时间:2015-10-02 23:32:02

标签: c# sas

除了使用SAS Enterprise Edition的集成组件之外,我还使用在Github上找到的以下项目的一部分来连接SAS服务器。这里的目标是命令服务器按计划运行程序。但是,每次都需要修改程序,这就是我试图触发它们以这种方式运行的原因。但是,它一直在lang.FlushLogLines上抛出错误。

https://github.com/cjdinger/SasHarness

SAS.Workspace ws = server.Workspace;
List<string> results = new List<string>();
Array CCs;
Array lineTypes;
Array logLines;
int maxLines = 100;
SAS.LanguageService lang = (SAS.LanguageService)ws.LanguageService;
Array linesVar = (Array)new string[] { PROGRAM_TEXT };
lang.SubmitLines(ref linesVar);

//THROWS AN ERROR HERE
lang.FlushLogLines(maxLines, out CCs, out lineTypes, out logLines);

for (int i = 0; i < logLines.Length; i++)
{
    results.Add((string)logLines.GetValue(i));
}

经过一些研究后,我找到了以下主题,建议确保在我的项目中引用所有必需的dll。这里的谜团是我确实引用了它们,但错误仍然存​​在。

http://blogs.sas.com/content/sasdummy/2013/06/09/sas-client-with-microsoft-dot-net/

此外,从第一行开始,代码不再使用SASHarness,而是仅使用本机SAS集成库。上面的代码也基于SAS的以下文档中列出的示例。

https://support.sas.com/documentation/cdl/en/itechwcdg/61500/PDF/default/itechwcdg.pdf(第27-28页)

是否有人遇到过与此类似的错误,若然,您是如何纠正的?

1 个答案:

答案 0 :(得分:2)

奇怪的是,修复此错误需要为每个无法加载的程序集声明一个实例。我不知道为什么这样可以解决问题,但现在可以解决了。

SAS.Workspace ws = server.Workspace;
string wsId = ws.UniqueIdentifier;

List<string> results = new List<string>();
Array CCs;
Array lineTypes;
Array logLines;
int maxLines = 100;
SAS.LanguageService lang = (SAS.LanguageService) server.Workspace.LanguageService;
Array linesVar = (Array) new string[] { PROGRAM_TEXT };

lang.SubmitLines(ref linesVar);

//For some reason, these two declarations need to be here
SAS.LanguageServiceCarriageControl CarriageControl = new SAS.LanguageServiceCarriageControl();
SAS.LanguageServiceLineType LineType = new SAS.LanguageServiceLineType();

lang.FlushLogLines(maxLines, out CCs, out lineTypes, out logLines);
for (int i = 0; i < logLines.Length; i++)
{
    results.Add((string) logLines.GetValue(i));
}