本文整理汇总了C#中SiliconStudio.Assets.PackageLoadParameters类的典型用法代码示例。如果您正苦于以下问题:C# PackageLoadParameters类的具体用法?C# PackageLoadParameters怎么用?C# PackageLoadParameters使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
PackageLoadParameters类属于SiliconStudio.Assets命名空间,在下文中一共展示了PackageLoadParameters类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LoadAssets
/// <summary>
/// Load assets and perform package analysis.
/// </summary>
/// <param name="package">The package.</param>
/// <param name="log">The log.</param>
/// <param name="loadParametersArg">The load parameters argument.</param>
/// <returns></returns>
internal bool LoadAssets(ILogger log, PackageLoadParameters loadParametersArg)
{
var loadParameters = loadParametersArg ?? PackageLoadParameters.Default();
try
{
// Load assets
if (loadParameters.AutoLoadTemporaryAssets)
{
LoadTemporaryAssets(log, loadParameters.AssetFiles, loadParameters.CancelToken, loadParameters.AssetFilter);
}
// Convert UPath to absolute
if (loadParameters.ConvertUPathToAbsolute)
{
var analysis = new PackageAnalysis(this, new PackageAnalysisParameters()
{
ConvertUPathTo = UPathType.Absolute,
IsProcessingUPaths = true, // This is done already by Package.Load
SetDirtyFlagOnAssetWhenFixingAbsoluteUFile = true // When loading tag attributes that have an absolute file
});
analysis.Run(log);
}
// Load templates
LoadTemplates(log);
return true;
}
catch (Exception ex)
{
log.Error("Error while pre-loading package [{0}]", ex, FullPath);
return false;
}
}
示例2: LoadAssembliesAndAssets
/// <summary>
/// Second part of the package loading process, when references, assets and package analysis is done.
/// </summary>
/// <param name="package">The package.</param>
/// <param name="log">The log.</param>
/// <param name="loadParametersArg">The load parameters argument.</param>
/// <returns></returns>
internal bool LoadAssembliesAndAssets(ILogger log, PackageLoadParameters loadParametersArg)
{
return LoadAssemblies(log, loadParametersArg) && LoadAssets(log, loadParametersArg);
}
示例3: LoadAssemblies
/// <summary>
/// Load only assembly references
/// </summary>
/// <param name="package">The package.</param>
/// <param name="log">The log.</param>
/// <param name="loadParametersArg">The load parameters argument.</param>
/// <returns></returns>
internal bool LoadAssemblies(ILogger log, PackageLoadParameters loadParametersArg)
{
var loadParameters = loadParametersArg ?? PackageLoadParameters.Default();
try
{
// Load assembly references
if (loadParameters.LoadAssemblyReferences)
{
LoadAssemblyReferencesForPackage(log, loadParameters);
}
return true;
}
catch (Exception ex)
{
log.Error("Error while pre-loading package [{0}]", ex, FullPath);
return false;
}
}
示例4: LoadAssemblyReferencesForPackage
private void LoadAssemblyReferencesForPackage(ILogger log, PackageLoadParameters loadParameters)
{
if (log == null) throw new ArgumentNullException(nameof(log));
if (loadParameters == null) throw new ArgumentNullException(nameof(loadParameters));
var assemblyContainer = loadParameters.AssemblyContainer ?? AssemblyContainer.Default;
foreach (var profile in Profiles)
{
foreach (var projectReference in profile.ProjectReferences.Where(projectRef => projectRef.Type == ProjectType.Plugin || projectRef.Type == ProjectType.Library))
{
// Check if already loaded
// TODO: More advanced cases: unload removed references, etc...
if (LoadedAssemblies.Any(x => x.ProjectReference == projectReference))
continue;
string assemblyPath = null;
var fullProjectLocation = UPath.Combine(RootDirectory, projectReference.Location);
try
{
var forwardingLogger = new ForwardingLoggerResult(log);
assemblyPath = VSProjectHelper.GetOrCompileProjectAssembly(fullProjectLocation, forwardingLogger, loadParameters.AutoCompileProjects, loadParameters.BuildConfiguration, extraProperties: loadParameters.ExtraCompileProperties, onlyErrors: true);
if (String.IsNullOrWhiteSpace(assemblyPath))
{
log.Error("Unable to locate assembly reference for project [{0}]", fullProjectLocation);
continue;
}
var loadedAssembly = new PackageLoadedAssembly(projectReference, assemblyPath);
LoadedAssemblies.Add(loadedAssembly);
if (!File.Exists(assemblyPath) || forwardingLogger.HasErrors)
{
log.Error("Unable to build assembly reference [{0}]", assemblyPath);
continue;
}
var assembly = assemblyContainer.LoadAssemblyFromPath(assemblyPath, log);
if (assembly == null)
{
log.Error("Unable to load assembly reference [{0}]", assemblyPath);
}
loadedAssembly.Assembly = assembly;
if (assembly != null)
{
// Register assembly in the registry
AssemblyRegistry.Register(assembly, AssemblyCommonCategories.Assets);
}
}
catch (Exception ex)
{
log.Error("Unexpected error while loading project [{0}] or assembly reference [{1}]", ex, fullProjectLocation, assemblyPath);
}
}
}
}
示例5: Load
/// <summary>
/// Loads only the package description but not assets or plugins.
/// </summary>
/// <param name="log">The log to receive error messages.</param>
/// <param name="filePath">The file path.</param>
/// <param name="loadParametersArg">The load parameters argument.</param>
/// <returns>A package.</returns>
/// <exception cref="System.ArgumentNullException">log
/// or
/// filePath</exception>
public static Package Load(ILogger log, string filePath, PackageLoadParameters loadParametersArg = null)
{
var package = LoadRaw(log, filePath);
if (package != null)
{
if (!package.LoadAssembliesAndAssets(log, loadParametersArg))
package = null;
}
return package;
}
示例6: TryLoadAssets
private static bool TryLoadAssets(PackageSession session, ILogger log, Package package, PackageLoadParameters loadParameters)
{
// Already loaded
if (package.State >= PackageState.AssetsReady)
return true;
// Dependencies could not properly be loaded
if (package.State < PackageState.DependenciesReady)
return false;
// A package upgrade has previously been tried and denied, so let's keep the package in this state
if (package.State == PackageState.UpgradeFailed)
return false;
try
{
// First, check that dependencies have their assets loaded
bool dependencyError = false;
foreach (var dependency in package.FindDependencies(false, false))
{
if (!TryLoadAssets(session, log, dependency, loadParameters))
dependencyError = true;
}
if (dependencyError)
return false;
var pendingPackageUpgrades = new List<PendingPackageUpgrade>();
// Note: Default state is upgrade failed (for early exit on error/exceptions)
// We will update to success as soon as loading is finished.
package.State = PackageState.UpgradeFailed;
// Process store dependencies for upgraders
foreach (var packageDependency in package.Meta.Dependencies)
{
var dependencyPackage = session.Packages.Find(packageDependency);
if (dependencyPackage == null)
{
continue;
}
// Check for upgraders
var packageUpgrader = session.CheckPackageUpgrade(log, package, packageDependency, dependencyPackage);
if (packageUpgrader != null)
{
pendingPackageUpgrades.Add(new PendingPackageUpgrade(packageUpgrader, packageDependency, dependencyPackage));
}
}
// Prepare asset loading
var newLoadParameters = loadParameters.Clone();
newLoadParameters.AssemblyContainer = session.assemblyContainer;
// Default package version override
newLoadParameters.ExtraCompileProperties = new Dictionary<string, string>();
var defaultPackageOverride = NugetStore.GetPackageVersionVariable(PackageStore.Instance.DefaultPackageName) + "Override";
var defaultPackageVersion = PackageStore.Instance.DefaultPackageVersion.Version;
newLoadParameters.ExtraCompileProperties.Add(defaultPackageOverride, new Version(defaultPackageVersion.Major, defaultPackageVersion.Minor).ToString());
if (loadParameters.ExtraCompileProperties != null)
{
foreach (var property in loadParameters.ExtraCompileProperties)
{
newLoadParameters.ExtraCompileProperties[property.Key] = property.Value;
}
}
if (pendingPackageUpgrades.Count > 0)
{
var upgradeAllowed = true;
// Need upgrades, let's ask user confirmation
if (loadParameters.PackageUpgradeRequested != null)
{
upgradeAllowed = loadParameters.PackageUpgradeRequested(package, pendingPackageUpgrades);
}
if (!upgradeAllowed)
{
log.Error("Necessary package migration for [{0}] has not been allowed", package.Meta.Name);
return false;
}
// Perform pre assembly load upgrade
foreach (var pendingPackageUpgrade in pendingPackageUpgrades)
{
var packageUpgrader = pendingPackageUpgrade.PackageUpgrader;
var dependencyPackage = pendingPackageUpgrade.DependencyPackage;
if (!packageUpgrader.UpgradeBeforeAssembliesLoaded(session, log, package, pendingPackageUpgrade.Dependency, dependencyPackage))
{
log.Error("Error while upgrading package [{0}] for [{1}] from version [{2}] to [{3}]", package.Meta.Name, dependencyPackage.Meta.Name, pendingPackageUpgrade.Dependency.Version, dependencyPackage.Meta.Version);
return false;
}
}
}
// Load assemblies. Set the package filename to the path on disk, in case of renaming.
// TODO: Could referenced projects be associated to other packages than this one?
newLoadParameters.ExtraCompileProperties.Add("SiliconStudioCurrentPackagePath", package.FullPath);
package.LoadAssemblies(log, newLoadParameters);
//.........这里部分代码省略.........
示例7: UpdateAssemblyReferences
/// <summary>
/// Loads the assembly references that were not loaded before.
/// </summary>
/// <param name="log">The log.</param>
/// <param name="loadParametersArg">The load parameters argument.</param>
public void UpdateAssemblyReferences(ILogger log, PackageLoadParameters loadParametersArg = null)
{
if (State < PackageState.DependenciesReady)
return;
var loadParameters = loadParametersArg ?? PackageLoadParameters.Default();
LoadAssemblyReferencesForPackage(log, loadParameters);
}
示例8: LoadMissingReferences
/// <summary>
/// Make sure packages have their dependencies and assets loaded.
/// </summary>
/// <param name="log">The log.</param>
/// <param name="loadParameters">The load parameters.</param>
public void LoadMissingReferences(ILogger log, PackageLoadParameters loadParameters = null)
{
LoadMissingDependencies(log, loadParameters);
LoadMissingAssets(log, loadParameters);
}
示例9: LoadMissingAssets
/// <summary>
/// Make sure packages have their assets loaded.
/// </summary>
/// <param name="log">The log.</param>
/// <param name="loadParametersArg">The load parameters argument.</param>
public void LoadMissingAssets(ILogger log, PackageLoadParameters loadParametersArg = null)
{
var loadParameters = loadParametersArg ?? PackageLoadParameters.Default();
var cancelToken = loadParameters.CancelToken;
// Make a copy of Packages as it can be modified by PreLoadPackageDependencies
var previousPackages = Packages.ToList();
foreach (var package in previousPackages)
{
// Output the session only if there is no cancellation
if (cancelToken.HasValue && cancelToken.Value.IsCancellationRequested)
{
return;
}
TryLoadAssets(this, log, package, loadParameters);
}
}
示例10: Load
/// <summary>
/// Loads a package from specified file path.
/// </summary>
/// <param name="filePath">The file path to a package file.</param>
/// <param name="sessionResult">The session result.</param>
/// <param name="loadParameters">The load parameters.</param>
/// <returns>A package.</returns>
/// <exception cref="System.ArgumentNullException">filePath</exception>
/// <exception cref="System.ArgumentException">File [{0}] must exist.ToFormat(filePath);filePath</exception>
public static void Load(string filePath, PackageSessionResult sessionResult, PackageLoadParameters loadParameters = null)
{
if (filePath == null) throw new ArgumentNullException("filePath");
if (sessionResult == null) throw new ArgumentNullException("sessionResult");
// Make sure with have valid parameters
loadParameters = loadParameters ?? PackageLoadParameters.Default();
// Make sure to use a full path.
filePath = FileUtility.GetAbsolutePath(filePath);
if (!File.Exists(filePath)) throw new ArgumentException("File [{0}] must exist".ToFormat(filePath), "filePath");
try
{
// Enable reference analysis caching during loading
AssetReferenceAnalysis.EnableCaching = true;
using (var profile = Profiler.Begin(PackageSessionProfilingKeys.Loading))
{
sessionResult.Clear();
sessionResult.Progress("Loading..", 0, 1);
var session = new PackageSession();
var packagePaths = new List<string>();
// If we have a solution, load all packages
if (PackageSessionHelper.IsSolutionFile(filePath))
{
PackageSessionHelper.LoadSolution(session, filePath, packagePaths, sessionResult);
}
else if (PackageSessionHelper.IsPackageFile(filePath))
{
packagePaths.Add(filePath);
}
else
{
sessionResult.Error("Unsupported file extension (only .sln or {0} are supported)", Package.PackageFileExtension);
return;
}
var cancelToken = loadParameters.CancelToken;
// Load all packages
var packagesLoaded = new PackageCollection();
foreach (var packageFilePath in packagePaths)
{
PreLoadPackage(session, sessionResult, packageFilePath, false, packagesLoaded, loadParameters);
// Output the session only if there is no cancellation
if (cancelToken.HasValue && cancelToken.Value.IsCancellationRequested)
{
return;
}
}
// Load all missing references/dependencies
session.LoadMissingReferences(sessionResult, loadParameters);
// Fix relative references
var analysis = new PackageSessionAnalysis(session, GetPackageAnalysisParametersForLoad());
var analysisResults = analysis.Run();
analysisResults.CopyTo(sessionResult);
// Run custom package session analysis
foreach (var type in AssetRegistry.GetPackageSessionAnalysisTypes())
{
var pkgAnalysis = (PackageSessionAnalysisBase)Activator.CreateInstance(type);
pkgAnalysis.Session = session;
var results = pkgAnalysis.Run();
results.CopyTo(sessionResult);
}
// Output the session only if there is no cancellation
if (!cancelToken.HasValue || !cancelToken.Value.IsCancellationRequested)
{
sessionResult.Session = session;
// Defer the initialization of the dependency manager
//session.DependencyManager.InitializeDeferred();
}
// Setup the current package when loading it
if (packagePaths.Count == 1)
{
var currentPackagePath = new UFile(packagePaths[0]);
foreach (var package in packagesLoaded)
{
if (package.FullPath == currentPackagePath)
{
//.........这里部分代码省略.........
示例11: AddExistingPackage
/// <summary>
/// Adds an existing package to the current session.
/// </summary>
/// <param name="packagePath">The package path.</param>
/// <param name="logger">The session result.</param>
/// <param name="loadParametersArg">The load parameters argument.</param>
/// <exception cref="System.ArgumentNullException">packagePath</exception>
/// <exception cref="System.ArgumentException">Invalid relative path. Expecting an absolute package path;packagePath</exception>
/// <exception cref="System.IO.FileNotFoundException">Unable to find package</exception>
public Package AddExistingPackage(UFile packagePath, ILogger logger, PackageLoadParameters loadParametersArg = null)
{
if (packagePath == null) throw new ArgumentNullException("packagePath");
if (logger == null) throw new ArgumentNullException("logger");
if (!packagePath.IsAbsolute) throw new ArgumentException("Invalid relative path. Expecting an absolute package path", "packagePath");
if (!File.Exists(packagePath)) throw new FileNotFoundException("Unable to find package", packagePath);
var loadParameters = loadParametersArg ?? PackageLoadParameters.Default();
Package package;
try
{
// Enable reference analysis caching during loading
AssetReferenceAnalysis.EnableCaching = true;
var packagesLoaded = new PackageCollection();
package = PreLoadPackage(this, logger, packagePath, false, packagesLoaded, loadParameters);
// Load all missing references/dependencies
LoadMissingReferences(logger, loadParameters);
// Load assets
TryLoadAssets(this, logger, package, loadParameters);
// Run analysis after
foreach (var packageToAdd in packagesLoaded)
{
var analysis = new PackageAnalysis(packageToAdd, GetPackageAnalysisParametersForLoad());
analysis.Run(logger);
}
}
finally
{
// Disable reference analysis caching after loading
AssetReferenceAnalysis.EnableCaching = false;
}
return package;
}
示例12: PreLoadPackageDependencies
private static void PreLoadPackageDependencies(PackageSession session, ILogger log, Package package, PackageCollection loadedPackages, PackageLoadParameters loadParameters)
{
if (session == null) throw new ArgumentNullException("session");
if (log == null) throw new ArgumentNullException("log");
if (package == null) throw new ArgumentNullException("package");
if (loadParameters == null) throw new ArgumentNullException("loadParameters");
bool packageDependencyErrors = false;
// TODO: Remove and recheck Dependencies Ready if some secondary packages are removed?
if (package.State >= PackageState.DependenciesReady)
return;
// 1. Load store package
foreach (var packageDependency in package.Meta.Dependencies)
{
var loadedPackage = session.Packages.Find(packageDependency);
if (loadedPackage == null)
{
var file = PackageStore.Instance.GetPackageFileName(packageDependency.Name, packageDependency.Version, session.constraintProvider);
if (file == null)
{
// TODO: We need to support automatic download of packages. This is not supported yet when only Xenko
// package is supposed to be installed, but It will be required for full store
log.Error("Unable to find package {0} not installed", packageDependency);
packageDependencyErrors = true;
continue;
}
// Recursive load of the system package
loadedPackage = PreLoadPackage(session, log, file, true, loadedPackages, loadParameters);
}
if (loadedPackage == null || loadedPackage.State < PackageState.DependenciesReady)
packageDependencyErrors = true;
}
// 2. Load local packages
foreach (var packageReference in package.LocalDependencies)
{
// Check that the package was not already loaded, otherwise return the same instance
if (session.Packages.ContainsById(packageReference.Id))
{
continue;
}
// Expand the string of the location
var newLocation = (UFile)AssetRegistry.ExpandString(session, packageReference.Location);
var subPackageFilePath = package.RootDirectory != null ? UPath.Combine(package.RootDirectory, newLocation) : newLocation;
// Recursive load
var loadedPackage = PreLoadPackage(session, log, subPackageFilePath.FullPath, false, loadedPackages, loadParameters);
if (loadedPackage == null || loadedPackage.State < PackageState.DependenciesReady)
packageDependencyErrors = true;
}
// 3. Update package state
if (!packageDependencyErrors)
{
package.State = PackageState.DependenciesReady;
}
}
示例13: Load
/// <summary>
/// Loads only the package description but not assets or plugins.
/// </summary>
/// <param name="log">The log to receive error messages.</param>
/// <param name="filePath">The file path.</param>
/// <param name="loadParametersArg">The load parameters argument.</param>
/// <returns>A package.</returns>
/// <exception cref="System.ArgumentNullException">log
/// or
/// filePath</exception>
public static Package Load(ILogger log, string filePath, PackageLoadParameters loadParametersArg = null)
{
if (log == null) throw new ArgumentNullException("log");
if (filePath == null) throw new ArgumentNullException("filePath");
filePath = FileUtility.GetAbsolutePath(filePath);
if (!File.Exists(filePath))
{
log.Error("Package file [{0}] was not found", filePath);
return null;
}
var loadParameters = loadParametersArg ?? PackageLoadParameters.Default();
try
{
var package = AssetSerializer.Load<Package>(filePath);
package.FullPath = filePath;
package.IsDirty = false;
// Load assembly references
if (loadParameters.LoadAssemblyReferences)
{
package.LoadAssemblyReferencesForPackage(log, loadParameters);
}
// Load assets
if (loadParameters.AutoLoadTemporaryAssets)
{
package.LoadTemporaryAssets(log, loadParameters.CancelToken);
}
// Convert UPath to absolute
if (loadParameters.ConvertUPathToAbsolute)
{
var analysis = new PackageAnalysis(package, new PackageAnalysisParameters()
{
ConvertUPathTo = UPathType.Absolute,
IsProcessingUPaths = true, // This is done already by Package.Load
SetDirtyFlagOnAssetWhenFixingAbsoluteUFile = true // When loading tag attributes that have an absolute file
});
analysis.Run(log);
}
// Load templates
package.LoadTemplates(log);
return package;
}
catch (Exception ex)
{
log.Error("Error while pre-loading package [{0}]", ex, filePath);
}
return null;
}
示例14: PreLoadPackage
private static Package PreLoadPackage(PackageSession session, ILogger log, string filePath, bool isSystemPackage, PackageCollection loadedPackages, PackageLoadParameters loadParameters)
{
if (session == null) throw new ArgumentNullException("session");
if (log == null) throw new ArgumentNullException("log");
if (filePath == null) throw new ArgumentNullException("filePath");
if (loadedPackages == null) throw new ArgumentNullException("loadedPackages");
if (loadParameters == null) throw new ArgumentNullException("loadParameters");
try
{
var packageId = Package.GetPackageIdFromFile(filePath);
// Check that the package was not already loaded, otherwise return the same instance
if (session.Packages.ContainsById(packageId))
{
return session.Packages.Find(packageId);
}
// Package is already loaded, use the instance
if (loadedPackages.ContainsById(packageId))
{
return loadedPackages.Find(packageId);
}
// Load the package without loading any assets
var package = Package.LoadRaw(log, filePath);
package.IsSystem = isSystemPackage;
// Convert UPath to absolute (Package only)
// Removed for now because it is called again in PackageSession.LoadAssembliesAndAssets (and running it twice result in dirty package)
// If we remove it from here (and call it only in the other method), templates are not loaded (Because they are loaded via the package store that do not use PreLoadPackage)
//if (loadParameters.ConvertUPathToAbsolute)
//{
// var analysis = new PackageAnalysis(package, new PackageAnalysisParameters()
// {
// ConvertUPathTo = UPathType.Absolute,
// SetDirtyFlagOnAssetWhenFixingAbsoluteUFile = true,
// IsProcessingUPaths = true,
// });
// analysis.Run(log);
//}
// If the package doesn't have a meta name, fix it here (This is supposed to be done in the above disabled analysis - but we still need to do it!)
if (string.IsNullOrWhiteSpace(package.Meta.Name) && package.FullPath != null)
{
package.Meta.Name = package.FullPath.GetFileName();
package.IsDirty = true;
}
// Add the package has loaded before loading dependencies
loadedPackages.Add(package);
// Package has been loaded, register it in constraints so that we force each subsequent loads to use this one (or fails if version doesn't match)
session.constraintProvider.AddConstraint(package.Meta.Name, new VersionSpec(package.Meta.Version.ToSemanticVersion()));
// Load package dependencies
// This will perform necessary asset upgrades
// TODO: We should probably split package loading in two recursive top-level passes (right now those two passes are mixed, making it more difficult to make proper checks)
// - First, load raw packages with their dependencies recursively, then resolve dependencies and constraints (and print errors/warnings)
// - Then, if everything is OK, load the actual references and assets for each packages
PreLoadPackageDependencies(session, log, package, loadedPackages, loadParameters);
// Add the package to the session but don't freeze it yet
session.Packages.Add(package);
return package;
}
catch (Exception ex)
{
log.Error("Error while pre-loading package [{0}]", ex, filePath);
}
return null;
}
示例15: LoadAssemblyReferencesForPackage
private void LoadAssemblyReferencesForPackage(ILogger log, PackageLoadParameters loadParameters)
{
if (log == null) throw new ArgumentNullException("log");
if (loadParameters == null) throw new ArgumentNullException("loadParameters");
var assemblyContainer = loadParameters.AssemblyContainer ?? AssemblyContainer.Default;
foreach (var profile in Profiles)
{
foreach (var projectReference in profile.ProjectReferences.Where(projectRef => projectRef.Type == ProjectType.Plugin || projectRef.Type == ProjectType.Library))
{
string assemblyPath = null;
var fullProjectLocation = UPath.Combine(RootDirectory, projectReference.Location);
try
{
assemblyPath = VSProjectHelper.GetOrCompileProjectAssembly(fullProjectLocation, log, loadParameters.AutoCompileProjects, extraProperties: loadParameters.ExtraCompileProperties, onlyErrors: true);
if (String.IsNullOrWhiteSpace(assemblyPath))
{
log.Error("Unable to locate assembly reference for project [{0}]", fullProjectLocation);
continue;
}
if (!File.Exists(assemblyPath))
{
log.Error("Unable to build assembly reference [{0}]", assemblyPath);
continue;
}
var assembly = assemblyContainer.LoadAssemblyFromPath(assemblyPath, log);
if (assembly == null)
{
log.Error("Unable to load assembly reference [{0}]", assemblyPath);
}
if (assembly != null)
{
// Register assembly in the registry
AssemblyRegistry.Register(assembly, AssemblyCommonCategories.Assets);
}
}
catch (Exception ex)
{
log.Error("Unexpected error while loading project [{0}] or assembly reference [{1}]", ex, fullProjectLocation, assemblyPath);
}
}
}
}