CompuMaster.Dms.Providers 2026.10.10

dotnet add package CompuMaster.Dms.Providers --version 2026.10.10
                    
NuGet\Install-Package CompuMaster.Dms.Providers -Version 2026.10.10
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CompuMaster.Dms.Providers" Version="2026.10.10" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="CompuMaster.Dms.Providers" Version="2026.10.10" />
                    
Directory.Packages.props
<PackageReference Include="CompuMaster.Dms.Providers" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add CompuMaster.Dms.Providers --version 2026.10.10
                    
#r "nuget: CompuMaster.Dms.Providers, 2026.10.10"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package CompuMaster.Dms.Providers@2026.10.10
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=CompuMaster.Dms.Providers&version=2026.10.10
                    
Install as a Cake Addin
#tool nuget:?package=CompuMaster.Dms.Providers&version=2026.10.10
                    
Install as a Cake Tool

CompuMaster.Dms

DMS Browser component for Scopevisio Teamwork, CenterDevice, WebDAV (e.g. NextCloud, OwnCloud)

Github Release NuGet CompuMaster.Dms NuGet CompuMaster.Dms.BrowserUI

CompuMaster.Dms ecosystem

These separately versioned repositories form the CompuMaster.Dms ecosystem; they are not Git submodules. Repository names, local directory names, and NuGet package IDs can differ.

Component Repository Responsibility
CompuMaster.Dms CompuMaster.Dms Provider-independent DMS workflows, provider adapters, and BrowserUI.
CompuMaster.Ocs CompuMaster.OpenCollaborationService ownCloud/Nextcloud OCS protocol, sharing, and account/group operations.
CompuMaster.Scopevisio.OpenApi CompuMaster.Scopevisio.OpenApi Scopevisio OpenScope REST API and authorization.
CompuMaster.Scopevisio.Teamwork CompuMaster.Scopevisio.Teamwork Teamwork integration connecting OpenScope authorization with CenterDevice clients.
CompuMaster.CenterDevice CompuMaster.CenterDevice.IO CenterDevice REST and file-system SDK; the DMS package dependency is CompuMaster.CenterDevice.Rest.

DMS uses WebDAV for ownCloud/Nextcloud file operations and OCS for supported sharing operations. Teamwork builds on OpenScope and CenterDevice clients. Actual package versions and optional source references are defined by the project files on the branch being tested; an unmerged upstream change is not automatically available in DMS.

For cross-repository work, evaluate the affected libraries before adding a DMS-only workaround. Keep reusable protocol, authentication, transport, and SDK behavior in its owning library, while DMS retains the common workflow/capability model and UI mapping. Preserve standalone library consumers, synchronous APIs, identity semantics, and existing defaults.

Track each upstream change in an issue in its owning repository, link its implementing PR there, and reference that issue as a dependency in the affected DMS issue. Keep reciprocal links, exact commit/package versions, integration order, and verification status current. Distinguish implemented, tested, merged, published, and consumed states; do not close a dependency merely because an upstream branch is green.

Shared remote test systems require coordinated exclusive access across repositories and local sessions, including setup and cleanup. Identically named GitHub Actions concurrency groups in different repositories do not provide a shared lock. See AGENTS.md for working rules.

Simple download/installation using NuGet

Install-Package CompuMaster.Dms.Providers

respectively

Install-Package CompuMaster.Dms.BrowserUI

Also see: https://www.nuget.org/packages/CompuMaster.Dms.Providers and https://www.nuget.org/packages/CompuMaster.Dms.BrowserUI

Modules Overview

There are following main modules for your use:

  • CompuMaster.Dms.Providers – The base library (compatible with .NET Standard/Core/Framework) for your own implementations to access your DMS systems (with build-in support for WebDAV (e.g. NextCloud, OwnCloud) and Scopevisio Teamwork (a flavored CenterDevice implementation)
  • CompuMaster.Dms.BrowserUI – An implementation of all required forms and dialogs with System.Windows.Forms (requires .NET Framework 4.8 or .NET 5.0-Windows). The UI follows CurrentUICulture, provides neutral English resources and a German translation, and falls back to English for unsupported languages. Use it to
    • download and upload files
    • setup user sharings and link sharings (if supported by the underlying provider)
    • provide several levels of allowed actions depending on required action context (manage folder structure only without viewing files, view and edit folder structure and files, or view everything without editing, etc.)
  • CompuMaster.Dms.TestDemo.WebDav – A demo application to show functionality of CompuMaster.Dms.BrowserUI components with a WebDAV server (based on System.Windows.Forms which requires .NET Framework 4.8 or .NET 5.0-Windows)
  • CompuMaster.Dms.TestDemo.OwnCloudClassic – A dedicated ownCloud Classic demo using its own local credential store.
  • CompuMaster.Dms.TestDemo.Nextcloud – A dedicated Nextcloud demo using its own local credential store and accepting either the instance URL or a complete WebDAV URL.
  • CompuMaster.Dms.TestDemo.ScopevisioTeamwork – A demo application to show functionality of CompuMaster.Dms.BrowserUI components with Scopevisio Teamwork (based on System.Windows.Forms which requires .NET Framework 4.8 or .NET 5.0-Windows)

All four demo logins use a shared document-management illustration. Applications can supply their own or provider-specific artwork through the additive LoginForm(formIcon, loginImage) constructor or the LoginImage property. See demo login artwork for image ownership, reset behavior and asset provenance.

File transfers in BrowserUI

Transfer dialogs display localized binary units, recent payload throughput and a per-file time estimate based on average throughput since that file started. Unknown counters and provider-finalization phases remain explicit. Failures include the exception message and diagnostic tooltips; closing an already displayed failure does not produce a second browser error or a success notification. Supported upload retries restart failed files from the beginning and skip successful files. Remaining files can be uploaded separately; byte-offset upload resume is not advertised.

Upload folder and Explorer file/folder drops preserve the selected directory hierarchy, including empty folders. Folder-upload availability follows the existing file-upload action and AllowUploadFiles; drops are accepted only when upload is allowed and no operation is active. A drop on the file list uses its current directory; a drop on a tree node uses that node. Recursive planning rejects linked paths and conflicting selected destination names before making changes.

Selected remote files can be dragged to Explorer or another Windows target supporting shell virtual files when AllowDownloadFiles is enabled. File content is downloaded on request after the drop, preserving selected resource IDs and using owned temporary files with bounded buffers. Only copying is offered; remote sources are retained. Other platforms can consume the provider APIs independently of the Windows Forms and shell UI.

Download folder is available from the selected tree node when AllowDownloadFiles is enabled. It downloads the complete hierarchy, including empty folders, into a chosen local parent directory and merges existing directories. Existing files are replaced only after a confirmation, with replace/skip/cancel and an apply-to-all choice. Unrelated local files remain intact. Failed or cancelled downloads remove their owned temporary files and preserve existing destination contents.

Local-file uploads preserve source modification dates on Scopevisio/CenterDevice and recognized ownCloud Classic/Nextcloud servers, including new versions, folder uploads and progress reporting. Stream/byte uploads without a known date retain their existing defaults. Generic WebDAV servers do not share a universal writable modification-date protocol.

Large ownCloud Classic/Nextcloud uploads use native DAV chunks after an authenticated upload-namespace check. The provider streams bounded parts and waits for server-confirmed assembly and session cleanup. Unsupported namespaces, legacy paths without a known protocol user ID, and generic servers retain ordinary PUT. Permission and transport failures remain errors; uncertain native writes are not replayed as PUT. Ordinary PUT still depends on the server and proxy accepting the complete request body within their configured deadlines. Downloads stream the response body; an ingress request-body timeout does not itself limit GET responses.

Providers can implement the additive DownloadFileWithProgressAsync selected-resource overload to report locally written payload bytes. WebDAV retains its staging/replacement behavior, and Scopevisio/CenterDevice retain their selected identity, timestamp and cancellation contracts. Existing derived providers use the compatible download fallback with unknown counters.

Asynchronous browsing

Use ListDirectoryEntriesAsync and ListFileEntriesAsync to populate a browser tree and file list. Native Scopevisio/CenterDevice listings retain resource identities, paths, sizes, timestamps, child metadata and sharing indicators, including download links, upload-only links and visible/hidden user/group shares. They use the existing resource conversion and batched upload-link lookup without first resolving every principal name and link's detailed settings. Retrieve full details for the selected resource through an item or identifier lookup before displaying properties or managing shares. Existing full-snapshot ListAll...Async methods retain their behavior; other providers and existing derived implementations use the compatible virtual-method fallback.

BrowserUI uses these entry listings for navigation and resolves selected details asynchronously, retaining the selected resource's path and parent context even for duplicate names. Pending operations keep the window active with a wait cursor and lock its content/action controls until completion; success, failure and cancellation restore their previous states. API request allowances remain in force.

WebDAV sharing capabilities

The WebDAV provider keeps generic WebDAV servers provider-neutral. For recognized Nextcloud and ownCloud personal-file endpoints, it probes the Open Collaboration Services (OCS) API and enables user, group, and public-link sharing only when that probe succeeds. OCS permission bits are mapped without silently changing their meaning; view and download remain coupled because the classic OCS bit field cannot represent modern Nextcloud download restrictions separately. Server policies such as maximum link-name length remain server-validated because they differ between products and deployments.

Sharing discovery requires both a successful OCS share-list request and the authenticated cloud/capabilities response. The adapter honors api_enabled, ownCloud's can_share and public.can_create_public_link, the current Nextcloud group.enabled or legacy group_sharing, and public.enabled/public.upload. Missing or malformed capability data does not enable optional operations. A failed discovery leaves ordinary WebDAV browsing available. Product identification alone never grants capabilities. Password, expiration, recipient and per-resource restrictions remain subject to server validation.

OCS user IDs remain operation identifiers. Display names use the sharee display name or label, with the common ID fallback. The current OCS client does not expose a distinct login-name field for these responses; LoginName therefore stays unknown rather than copying the ID or guessing from additional information. Existing WebDAV owner metadata takes precedence over supplemental share-owner metadata.

ownCloud Infinite Scale personal-file compatibility endpoints are only candidates for the same capability probe; they have not been verified against a real Infinite Scale server. Space endpoints (/dav/spaces/<space-id>) remain regular WebDAV endpoints because their sharing model uses LibreGraph roles and item identifiers; a future LibreGraph adapter can add that capability without changing the common DMS sharing API.

The isolated sharing tests cover policy differences and identity mapping. The ownCloud Classic and Nextcloud CI fixtures additionally require successful sharing discovery and exercise public-link create/read/update/delete with verified test-owned directory cleanup. User/group mutations are covered in isolation, not yet against explicitly configured remote recipient accounts. See the upstream capability contracts for Nextcloud and ownCloud Classic.

Development and remote integration-test guidance is documented in TESTING.md. See Local test credentials for the mapping between demo applications, environment variables, and local integration-test credential stores.

WebDAV resource owners

WebDavDmsProvider reads owner metadata returned for each file or folder. Generic WebDAV servers may provide an owner principal through the optional WebDAV ACL DAV:owner property. ownCloud Classic and Nextcloud may provide oc:owner-id and oc:owner-display-name; other servers may expose these properties too. Availability depends on the server and resource, including whether an item is shared. The provider requests the properties by name because some servers omit them from allprop responses even when asked through include. It prefers the account properties when available. It leaves the owner blank when the server does not return usable owner metadata, including when a requested property is missing or forbidden. A known owner ID without a display name is shown as the ID. This does not require user-directory or sharing support.

Screenshots

Login form, customized for WebDAV

WebDAV login form with the shared DMS artwork

Browser dialog window

DMS browser displaying example folders and files

Extended file properties windows

image

Sharing setup

Dialogs for sharing setup for internal users (user accounts) or external users (web links) depend on DMS provider

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on CompuMaster.Dms.Providers:

Package Downloads
CompuMaster.Dms.BrowserUI

Implementation of browser dialogs for System.Windows.Form

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2026.10.10 0 10/10/2026
2026.10.8 45 10/8/2026
2026.10.7 48 10/7/2026
2026.8.12 231 8/12/2026
2026.5.21 196 5/21/2026
2026.1.2.1 247 1/2/2026
2026.1.2 193 1/2/2026
2025.8.8 365 8/8/2025
2025.5.21.4 328 5/21/2025
2025.5.21.3 310 5/21/2025
2025.5.21.2 297 5/21/2025
2025.5.21.1 307 5/21/2025
2025.5.21 306 5/21/2025
2024.11.20 318 11/20/2024
2023.12.13 552 12/13/2023
2023.5.22 465 5/22/2023
2023.3.14 462 3/14/2023
2023.2.7.101 486 2/7/2023
2023.2.7.100 450 2/7/2023
2022.5.24.100 746 5/24/2022
Loading failed