本文整理汇总了C#中MgaProject.Save方法的典型用法代码示例。如果您正苦于以下问题:C# MgaProject.Save方法的具体用法?C# MgaProject.Save怎么用?C# MgaProject.Save使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MgaProject
的用法示例。
在下文中一共展示了MgaProject.Save方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ImportXME
public static void ImportXME(string xmePath, string mgaPath, bool enableAutoAddons=false)
{
MgaParser parser = new MgaParser();
string paradigm;
string paradigmVersion;
object paradigmGuid;
string basename;
string version;
parser.GetXMLInfo(xmePath, out paradigm, out paradigmVersion, out paradigmGuid, out basename, out version);
parser = new MgaParser();
MgaProject project = new MgaProject();
MgaResolver resolver = new MgaResolver();
resolver.IsInteractive = false;
dynamic dynParser = parser;
dynParser.Resolver = resolver;
project.Create("MGA=" + Path.GetFullPath(mgaPath), paradigm);
if (enableAutoAddons)
{
project.EnableAutoAddOns(true);
}
try
{
parser.ParseProject(project, xmePath);
project.Save();
}
finally
{
project.Close();
}
}
示例2: Main
public void Main(MgaProject project, MgaFCO currentobj, MgaFCOs selectedobjs, ComponentStartMode startMode)
{
string OutputBaseDir = (string)componentParameters["output_dir"];
SotConfig sotConfig = new SotConfig();
sotConfig.MultiJobRun = true;
sotConfig.OriginalProjectFileName = project.ProjectConnStr.Substring("MGA=".Length);
sotConfig.ProjectFileName = Path.Combine(OutputBaseDir, Path.GetFileName(sotConfig.OriginalProjectFileName));
// can't be in a tx and save the project
project.AbortTransaction();
project.Save("MGA=" + sotConfig.ProjectFileName, true);
project.BeginTransactionInNewTerr(transactiontype_enum.TRANSACTION_NON_NESTED);
MgaGateway.PerformInTransaction(delegate
{
sotConfig.SoTID = currentobj.ID;
}, transactiontype_enum.TRANSACTION_READ_ONLY);
using (StreamWriter writer = new StreamWriter(Path.Combine(OutputBaseDir, "manifest.sot.json")))
{
writer.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(sotConfig, Newtonsoft.Json.Formatting.Indented));
}
string configsDir = Path.Combine(Path.GetDirectoryName((string)componentParameters["original_project_file"]), "config");
if (Directory.Exists(configsDir))
{
var configs = Directory.EnumerateFiles(configsDir, "*xml").ToList();
string sotConfigDir = Path.Combine(OutputBaseDir, "config");
Directory.CreateDirectory(sotConfigDir);
foreach (var config in configs)
{
File.Copy(config, Path.Combine(sotConfigDir, Path.GetFileName(config)));
}
}
//componentParameters["labels"] = "";
//componentParameters["runCommand"] = ;
//componentParameters["results_zip_py"] as string;
// result.LogFileDirectory = Path.Combine(MainParameters.ProjectDirectory, "log");
// componentParameters["build_query"] as string;
}
示例3: RunCyPhyMLSync
protected void RunCyPhyMLSync(System.Action<MgaProject, CyPhyMetaLink.CyPhyMetaLinkAddon, CyPhyMetaLink.CyPhyMetalinkInterpreter> testAction)
{
try
{
if (debugMetalinkStartup)
{
metalink.WaitForExit();
string stderr = metalink.StandardError.ReadToEnd();
string stdout = metalink.StandardOutput.ReadToEnd();
}
Exception exception = null;
AutoResetEvent workEvent = new AutoResetEvent(false);
Thread work = new Thread(new ThreadStart(delegate
{
try
{
// Import XME file to create an MGA
String xmeFullPath = Path.Combine(TestModelDir, testXMEFilename);
String mgaFullPath = TestModelDir + testInputFilename;
MgaUtils.ImportXME(xmeFullPath, mgaFullPath);
Assert.True(File.Exists(mgaFullPath), "MGA file not found. XME import may have failed.");
MgaProject project = new MgaProject();
project.EnableAutoAddOns(true);
project.OpenEx("MGA=" + mgaFullPath, "", true);
try
{
Assert.Contains("MGA.Addon.CyPhyMLPropagate", project.AddOnComponents.Cast<IMgaComponentEx>().Select(x => x.ComponentProgID));
CyPhyMetaLink.CyPhyMetaLinkAddon propagate = (CyPhyMetaLink.CyPhyMetaLinkAddon)project.AddOnComponents.Cast<IMgaComponent>().Where(comp => comp is CyPhyMetaLink.CyPhyMetaLinkAddon).FirstOrDefault();
CyPhyMetaLink.CyPhyMetalinkInterpreter interpreter = new CyPhyMetaLink.CyPhyMetalinkInterpreter();
propagate.TestMode = true;
interpreter.GMEConsole = GME.CSharp.GMEConsole.CreateFromProject(project);
interpreter.MgaGateway = new MgaGateway(project);
interpreter.ConnectToMetaLinkBridge(project, 128);
propagate.bridgeClient.SocketQueue.EditMessageReceived += msg => addonMessagesQueue.Add(msg);
testAction(project, propagate, interpreter);
}
finally
{
project.Save(project.ProjectConnStr + "_posttest.mga", true);
project.Close(true);
}
}
catch (Exception e)
{
exception = e;
KillMetaLink();
}
finally
{
workEvent.Set();
}
}));
work.SetApartmentState(ApartmentState.STA);
work.Start();
ManualResetEvent metalinkEvent = new ManualResetEvent(true);
metalinkEvent.SafeWaitHandle = new SafeWaitHandle(metalink.Handle, false);
int handle = WaitHandle.WaitAny(new WaitHandle[] { metalinkEvent, workEvent });
if (exception != null)
{
throw new Exception("Test failed", exception);
}
if (handle == 0)
{
work.Abort();
throw new Exception("metalink exited");
}
}
finally
{
KillMetaLink();
lock (metalinkLogStream)
metalinkLogStream.Dispose();
}
}
示例4: DesignPackageImport
public void DesignPackageImport()
{
// Clean the test directory
var pathTest = Path.Combine(META.VersionInfo.MetaPath,
"test",
"InterchangeTest",
"DesignInterchangeTest",
"ImportTestUnits",
"Package");
foreach (var path in Directory.EnumerateDirectories(pathTest))
{
Directory.Delete(path, true);
}
foreach (var path in Directory.EnumerateFiles(pathTest, "*.*"))
{
if (!path.Contains("NestedFolders.adp"))
{
File.Delete(path);
}
}
// Create a test project
var proj = new MgaProject();
proj.Create("MGA=" + Path.Combine(pathTest,"testmodel.mga"), "CyPhyML");
try
{
String pathCA = null;
proj.PerformInTransaction(() =>
{
// Instantiate the importer and import the package
var importer = new AVMDesignImporter(GMEConsole.CreateFromProject(proj), proj);
var mdlCA = importer.ImportFile(Path.Combine(pathTest, "NestedFolders.adp"), AVMDesignImporter.DesignImportMode.CREATE_CAS);
var ca = CyPhyClasses.ComponentAssembly.Cast(mdlCA.Impl);
pathCA = ca.GetDirectoryPath(ComponentLibraryManager.PathConvention.ABSOLUTE);
});
// Check the design's backend folder for all files except for the ADM.
var filesExpected = new List<String>
{
"testObject.txt",
"dir1/testObject.txt",
"dir1/dir1a/testObject.txt",
"dir2/testObject.txt"
};
var filesInDir = Directory.GetFiles(pathCA, "*.*", SearchOption.AllDirectories);
Assert.Equal(filesExpected.Count(), filesInDir.Count());
foreach (var file in filesExpected)
{
String fullPath = Path.Combine(pathCA, file);
Assert.True(File.Exists(fullPath));
}
}
finally
{
proj.Save();
proj.Close();
}
}
示例5: ConvertAllSchematicsToCyPhy
private static void ConvertAllSchematicsToCyPhy(string path)
{
var schematics = ConvertAllDevices(path);
// Create MGA project on the spot.
var proj = new MgaProject();
String connectionString = String.Format("MGA={0}", Path.GetTempFileName());
proj.Create(connectionString, "CyPhyML");
proj.EnableAutoAddOns(true);
var mgaGateway = new MgaGateway(proj);
proj.CreateTerritoryWithoutSink(out mgaGateway.territory);
var module = new CyPhyComponentAuthoring.Modules
.EDAModelImport()
{
CurrentProj = proj
};
Dictionary<String, String> d_failures = new Dictionary<string, string>();
mgaGateway.PerformInTransaction(delegate
{
var rf = CyPhyClasses.RootFolder.GetRootFolder(proj);
var cf = CyPhyClasses.Components.Create(rf);
foreach (var t in schematics)
{
var identifier = t.Item1;
var schematic = t.Item2;
CyPhy.Component component = CyPhyClasses.Component.Create(cf);
component.Name = identifier;
module.SetCurrentComp(component);
try
{
var cyphySchematicModel = module.BuildCyPhyEDAModel(schematic, component);
Assert.Equal(component.Children.SchematicModelCollection.Count(), 1);
}
catch (Exception e)
{
d_failures[identifier] = e.ToString();
}
}
},
transactiontype_enum.TRANSACTION_NON_NESTED,
abort: true);
proj.Save();
proj.Close();
if (d_failures.Any())
{
String msg = String.Format("Failures in converting {0} component(s):" + Environment.NewLine,
d_failures.Count);
foreach (var kvp in d_failures)
{
msg += String.Format("{0}: {1}" + Environment.NewLine + Environment.NewLine,
kvp.Key,
kvp.Value);
}
Assert.True(false, msg);
}
}