Включение (DLL) файлов в пакеты Nuget - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю на платформе, которая поддерживает загрузку пользовательского кода с помощью пакетов Nuget.Документация не так хороша, и я не смог найти лучшего решения, связанного с зависимостями.Когда я загружаю свой пакет, платформа запускает восстановление nuget.Однако, в большинстве случаев, он не находит пакеты и, конечно, не локальные пакеты.Это привело меня к созданию пользовательского файла nuspec, который включает все мои файлы и некоторые из них, включенные в пакет nuget.Это прекрасно работает на платформе.Однако решение подвержено ошибкам и сложное в управлении.Легко неправильно ввести пути к файлам и забыть добавить определенные пакеты.

 <?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>ASystem.CustomerSystem</id>
    <version>1.0.7</version>
    <authors>ME</authors>
    <owners>ME</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>A nuget package with custom tasks for the platform</description>
    <tags>ME</tags>
    <dependencies>
      <group targetFramework=".net471">
        <dependency id="System.ServiceModel.Http" version="4.5.3" exclude="Build,Analyzers" />
        <dependency id="System.ServiceModel.Primitives" version="4.5.3" exclude="Build,Analyzers" />
        <dependency id="Microsoft.IdentityModel.JsonWebTokens" version="5.4.0" exclude="Build,Analyzers" />
        <dependency id="Microsoft.IdentityModel.Logging" version="5.4.0" exclude="Build,Analyzers" />
        <dependency id="Microsoft.IdentityModel.Tokens" version="5.4.0" exclude="Build,Analyzers" />
        <dependency id="Newtonsoft.Json" version="12.0.1" exclude="Build,Analyzers" />
        <dependency id="System.IdentityModel.Tokens.Jwt" version="5.4.0" exclude="Build,Analyzers" />
      </group>
      <group targetFramework=".NETStandard2.0">
        <dependency id="ASystem.WebStandard" version="1.0.0.0" exclude="Build,Analyzers" />
        <dependency id="System.ServiceModel.Http" version="4.5.3" exclude="Build,Analyzers" />
        <dependency id="System.ServiceModel.Primitives" version="4.5.3" exclude="Build,Analyzers" />
        <dependency id="Microsoft.IdentityModel.JsonWebTokens" version="5.4.0" exclude="Build,Analyzers" />
        <dependency id="Microsoft.IdentityModel.Logging" version="5.4.0" exclude="Build,Analyzers" />
        <dependency id="Microsoft.IdentityModel.Tokens" version="5.4.0" exclude="Build,Analyzers" />
        <dependency id="Newtonsoft.Json" version="12.0.1" exclude="Build,Analyzers" />
        <dependency id="System.IdentityModel.Tokens.Jwt" version="5.4.0" exclude="Build,Analyzers" />
      </group>
    </dependencies>
  </metadata>
  <files>
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\net471\ASystem.CustomerSystem.dll" target="lib\net471\ASystem.CustomerSystem.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\net471\ASystem.WebStandard.dll" target="lib\net471\ASystem.WebStandard.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\net471\Microsoft.IdentityModel.JsonWebTokens.dll" target="lib\net471\Microsoft.IdentityModel.JsonWebTokens.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\net471\Microsoft.IdentityModel.Logging.dll" target="lib\net471\Microsoft.IdentityModel.Logging.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\net471\Microsoft.IdentityModel.Tokens.dll" target="lib\net471\Microsoft.IdentityModel.Tokens.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\net471\System.IdentityModel.Tokens.Jwt.dll" target="lib\net471\System.IdentityModel.Tokens.Jwt.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\netstandard2.0\ASystem.CustomerSystem.dll" target="lib\netstandard2.0\ASystem.CustomerSystem.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\ASystemTaskMetadata.json" target="ASystemTaskMetadata.json" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\netstandard2.0\ASystem.WebStandard.dll" target="lib\netstandard2.0\ASystem.WebStandard.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\netstandard2.0\Microsoft.IdentityModel.JsonWebTokens.dll" target="lib\netstandard2.0\Microsoft.IdentityModel.JsonWebTokens.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\netstandard2.0\Microsoft.IdentityModel.Logging.dll" target="lib\netstandard2.0\Microsoft.IdentityModel.Logging.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\netstandard2.0\Microsoft.IdentityModel.Tokens.dll" target="lib\netstandard2.0\Microsoft.IdentityModel.Tokens.dll" />
    <file src="C:\Project\ASystem\ASystem.Customer\ASystem.CustomerSystem\bin\Debug\netstandard2.0\System.IdentityModel.Tokens.Jwt.dll" target="lib\netstandard2.0\System.IdentityModel.Tokens.Jwt.dll" />
  </files>
</package>

Как вы можете видеть, я хочу поддерживать как Standard 2.0, так и .Net471.Я должен включить все мои библиотеки DLL вручную.Это приводит меня к некоторым вопросам:

1. Можно ли вместо этого ссылаться на эти файлы непосредственно в файле csproj?Имо легче управлять, просто полагаться на опцию публикации довольно аккуратно.Что я могу сказать, запуск publish создает новый файл nuspec из файла csproj и упаковывает его.

2. Есть ли инструкция для файла csproj или nuspec, который автоматически включает все DLLS?Или я могу по крайней мере сделать его несколько более читабельным и ненадежным для абсолютных путей к файлам, таких как в моем примере?

...