本文整理汇总了C#中IPackage.FindDependency方法的典型用法代码示例。如果您正苦于以下问题:C# IPackage.FindDependency方法的具体用法?C# IPackage.FindDependency怎么用?C# IPackage.FindDependency使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPackage
的用法示例。
在下文中一共展示了IPackage.FindDependency方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: IsSatellitePackage
public static bool IsSatellitePackage(
IPackage package,
IPackageRepository repository,
FrameworkName targetFramework,
out IPackage runtimePackage)
{
// A satellite package has the following properties:
// 1) A package suffix that matches the package's language, with a dot preceding it
// 2) A dependency on the package with the same Id minus the language suffix
// 3) The dependency can be found by Id in the repository (as its path is needed for installation)
// Example: foo.ja-jp, with a dependency on foo
runtimePackage = null;
if (package.IsSatellitePackage())
{
string runtimePackageId = package.Id.Substring(0, package.Id.Length - (package.Language.Length + 1));
PackageDependency dependency = package.FindDependency(runtimePackageId, targetFramework);
if (dependency != null)
{
runtimePackage = repository.FindPackage(runtimePackageId, versionSpec: dependency.VersionSpec, allowPrereleaseVersions: true, allowUnlisted: true);
}
}
return runtimePackage != null;
}
示例2: IsSatellitePackage
public static bool IsSatellitePackage(IPackage package, IPackageRepository repository, out IPackage runtimePackage)
{
// A satellite package has the following properties:
// 1) A package suffix that matches the package's language, with a dot preceding it
// 2) A dependency on the package with the same Id minus the language suffix
// 3) The dependency can be found by Id in the repository (as its path is needed for installation)
// Example: foo.ja-jp, with a dependency on foo
runtimePackage = null;
if (!String.IsNullOrEmpty(package.Language) && package.Id.EndsWith("." + package.Language, StringComparison.OrdinalIgnoreCase))
{
string runtimePackageId = package.Id.Substring(0, package.Id.Length - (package.Language.Length + 1));
PackageDependency dependency = package.FindDependency(runtimePackageId);
if (dependency != null)
{
runtimePackage = repository.FindPackage(runtimePackageId);
}
}
return runtimePackage != null;
}
示例3: GetXtbPackage
private XtbNuGetPackage GetXtbPackage(IPackage package)
{
var xtbPackage = new XtbNuGetPackage(package, PackageInstallAction.None);
var files = package.GetFiles();
bool install = false, update = false, compatible = false, otherFilesFound = false;
var xtbDependency = package.FindDependency("XrmToolBox", null);
if (xtbDependency != null)
{
var xtbDependencyVersion = xtbDependency.VersionSpec.MinVersion.Version;
compatible = IsPluginDependencyCompatible(xtbDependencyVersion);
}
var currentVersion = new Version(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue);
var currentVersionFound = false;
// TODO: Don't compare with all files, plugin packages may contain other dll's and exe's that have other versioning
// How to determine actual version of existing plugin?
foreach (var file in files)
{
if (Path.GetDirectoryName(file.EffectivePath).ToLower() == "plugins")
{
// Only check version of files in the Plugins folder
var existingPluginFile =
plugins.FirstOrDefault(p => file.EffectivePath.ToLower().EndsWith(p.Name.ToLower()));
if (existingPluginFile == null)
{
install = true;
}
else
{
// If a file is found, we check version only if the file
// contains classes that implement IXrmToolBoxPlugin
if (!existingPluginFile.ImplementsXrmToolBoxPlugin())
{
otherFilesFound = true;
continue;
}
var existingFileVersion = existingPluginFile.GetAssemblyVersion();
if (existingFileVersion < currentVersion)
{
currentVersion = existingFileVersion;
currentVersionFound = true;
}
if (existingFileVersion < package.Version.Version)
{
update = true;
}
}
}
}
if (currentVersionFound)
{
xtbPackage.CurrentVersion = currentVersion;
}
if (otherFilesFound || update)
{
xtbPackage.RequiresXtbRestart = true;
}
if (!compatible)
{
xtbPackage.Action = PackageInstallAction.Unavailable;
}
else if (update)
{
xtbPackage.Action = PackageInstallAction.Update;
}
else if (install)
{
xtbPackage.Action = PackageInstallAction.Install;
}
else
{
xtbPackage.Action = PackageInstallAction.None;
}
return xtbPackage;
}