本文整理汇总了C#中Mono.Addins.Database.AddinScanResult.IgnorePath方法的典型用法代码示例。如果您正苦于以下问题:C# AddinScanResult.IgnorePath方法的具体用法?C# AddinScanResult.IgnorePath怎么用?C# AddinScanResult.IgnorePath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mono.Addins.Database.AddinScanResult
的用法示例。
在下文中一共展示了AddinScanResult.IgnorePath方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ScanFile
public void ScanFile(IProgressStatus monitor, string file, AddinScanFolderInfo folderInfo, AddinScanResult scanResult)
{
if (scanResult.IgnorePath (file)) {
// The file must be ignored. Maybe it caused a crash in a previous scan, or it
// might be included by a .addin file (in which case it will be scanned when processing
// the .addin file).
folderInfo.SetLastScanTime (file, null, false, fs.GetLastWriteTime (file), true);
return;
}
if (monitor.LogLevel > 1)
monitor.Log ("Scanning file: " + file);
// Log the file to be scanned, so in case of a process crash the main process
// will know what crashed
monitor.Log ("plog:scan:" + file);
string scannedAddinId = null;
bool scannedIsRoot = false;
bool scanSuccessful = false;
AddinDescription config = null;
try {
string ext = Path.GetExtension (file).ToLower ();
if (ext == ".dll" || ext == ".exe")
scanSuccessful = ScanAssembly (monitor, file, scanResult, out config);
else
scanSuccessful = ScanConfigAssemblies (monitor, file, scanResult, out config);
if (config != null) {
AddinFileInfo fi = folderInfo.GetAddinFileInfo (file);
// If version is not specified, make up one
if (config.Version.Length == 0) {
config.Version = "0.0.0.0";
}
if (config.LocalId.Length == 0) {
// Generate an internal id for this add-in
config.LocalId = database.GetUniqueAddinId (file, (fi != null ? fi.AddinId : null), config.Namespace, config.Version);
config.HasUserId = false;
}
// Check errors in the description
StringCollection errors = config.Verify (fs);
if (database.IsGlobalRegistry && config.AddinId.IndexOf ('.') == -1) {
errors.Add ("Add-ins registered in the global registry must have a namespace.");
}
if (errors.Count > 0) {
scanSuccessful = false;
monitor.ReportError ("Errors found in add-in '" + file + ":", null);
foreach (string err in errors)
monitor.ReportError (err, null);
}
// Make sure all extensions sets are initialized with the correct add-in id
config.SetExtensionsAddinId (config.AddinId);
scanResult.ChangesFound = true;
// If the add-in already existed, try to reuse the relation data it had.
// Also, the dependencies of the old add-in need to be re-analized
AddinDescription existingDescription = null;
bool res = database.GetAddinDescription (monitor, folderInfo.Domain, config.AddinId, config.AddinFile, out existingDescription);
// If we can't get information about the old assembly, just regenerate all relation data
if (!res)
scanResult.RegenerateRelationData = true;
string replaceFileName = null;
if (existingDescription != null) {
// Reuse old relation data
config.MergeExternalData (existingDescription);
Util.AddDependencies (existingDescription, scanResult);
replaceFileName = existingDescription.FileName;
}
// If the scanned file results in an add-in version different from the one obtained from
// previous scans, the old add-in needs to be uninstalled.
if (fi != null && fi.IsAddin && fi.AddinId != config.AddinId) {
database.UninstallAddin (monitor, folderInfo.Domain, fi.AddinId, fi.File, scanResult);
// If the add-in version has changed, regenerate everything again since old data can't be reused
if (Addin.GetIdName (fi.AddinId) == Addin.GetIdName (config.AddinId))
scanResult.RegenerateRelationData = true;
}
// If a description could be generated, save it now (if the scan was successful)
if (scanSuccessful) {
// Assign the domain
if (config.IsRoot) {
if (folderInfo.RootsDomain == null) {
//.........这里部分代码省略.........