示例#1
0
    private string GetNugetPackageName(string name, string type)
    {
        if (type == SourceCodeTypes.Template)
        {
            return(TemplateNugetPackageInfoProvider.GetNugetPackageName(name));
        }

        if (type == SourceCodeTypes.Module)
        {
            return(name + ModuleConsts.SourceCorePackagePostfix);
        }

        return(name);
    }
示例#2
0
    public async Task <string> GetCachedDllFilePathAsync(string name, string type, string version = null, bool includePreReleases = false, bool includeDependencies = false)
    {
        if (type == SourceCodeTypes.Template)
        {
            name = TemplateNugetPackageInfoProvider.GetNugetPackageName(name);
        }

        version ??= await GetLatestVersionAsync(name, includePreReleases);

        var localDllFolder = Path.Combine(
            GetLocalNugetCachePath(),
            name,
            version,
            "lib");

        if (!Directory.Exists(localDllFolder) ||
            (includeDependencies && !Directory.GetFiles(localDllFolder, $"*Volo.Abp.Studio.ModuleInstaller.dll", SearchOption.AllDirectories).Any()))
        {
            if (includeDependencies)
            {
                var temporaryFolder = await _nugetPackageCacheManager.CachePackageAsync(name, version, false);

                var outputFolder = Path.GetDirectoryName(
                    Directory
                    .GetFiles(localDllFolder, $"*{name}.dll", SearchOption.AllDirectories)
                    .First()
                    );

                _cmdHelper.RunCmdAndGetOutput($"dotnet build -o {outputFolder}", temporaryFolder);

                Directory.Delete(temporaryFolder, true);
            }
            else
            {
                await _nugetPackageCacheManager.CachePackageAsync(name, version);
            }
        }

        if (!Directory.Exists(localDllFolder))
        {
            return(null);
        }

        return(Directory.GetFiles(localDllFolder, $"{name}.dll", SearchOption.AllDirectories).FirstOrDefault());
    }