title: Can I publish and consume binary .NET assemblies using NPM?
body: <p>Can I an I publish a binary .NET assembly as an NPM package?</p>
  <p>And how can other projects reference that assembly by installing the package?</p>
  <h1>Background:</h1>
  <p>I am writing a logging framework that will be used from around 5 other projects. The framework consists of 4 components:</p>
  <ul>
  <li><strong>a .NET log server library:</strong> a binary .NET assembly for processing log messages from clients</li>
  <li><strong>a web client Javascript library:</strong> an Angular module for sending log messages from a web client</li>
  <li><strong>a .NET client library:</strong> a binary .NET assembly for sending log messages from .NET applications</li>
  <li><strong>a web dashboard Javascript library:</strong> an Angular module with UI components for viewing and controlling the log</li>
  </ul>
  <p>We need a way of publishing these components that makes it clear to the package users that they belong together, and are released and versioned together (i.e. ver 0.8 of the server library won't work with version 0.9 of the web client library).</p>
  <h1>What we tried:</h1>
  <p>At first, we considered sticking to native tools - i.e. publishing the .NET libraries using NuGet, and the Angular modules using NPM.</p>
  <p>But this approach makes it very difficult to keep the .NET and web components consistent, as there is no way to specify version dependencies between NuGet and NPM</p>
  <p>Instead we're now considering publishing all four components in one NPM package - projects installing the package can then just ignore the unused components.</p>
  <p>But we are uncertain how to install such a package in a Visual Studio 2015 C#/.NET project. Ideally, we would just run</p>
  <pre><code>npm install --save foo-logging
  </code></pre>
  <p>and the two assemblies FooLoggingClient.dll and FooLoggingServer.dll would automagically appear under 'references'.</p>
  <p>But unfortunately, we have to manually add an assembly reference to</p>
  <pre><code>node_modules\foo-logging\dist\FooLoggingClient.dll
  </code></pre>
  <p>This works - but it feels like we're working against the grain.</p>
  <h1>The questions:</h1>
  <p>Are we going in the right direction? Are there better tools or approaches for publishing multi-platform packages?</p>