Я работаю на платформе, которая поддерживает загрузку пользовательского кода с помощью пакетов 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?Или я могу по крайней мере сделать его несколько более читабельным и ненадежным для абсолютных путей к файлам, таких как в моем примере?