Кто-то может сказать мне, что здесь не так? Спасибо !!
Насколько я знаю, в Net стандартных проектах ( новый формат sdk проектов и когда он упакован, он может только быть установлен в формате PackageReference ), когда вы изменяете Build Action
файла на Content
и затем нажимаете Pack , nuget поместит эти файлы в папку ContentFiles в пакете nuget папка (HtAlarms.Commonxxxxx.nupkg
).
При установке этого пакета в новый проект эти файлы из папки ContentFiles
будут автоматически скопированы в новый проект.
И это связано с Build Action
вместо CopyToOutputDirectory
.
Получив дополнительную информацию, вы не хотите, чтобы этот файл появлялся во втором пакете nuget HtOpc.Alarms
, и я предлагаю вам попробовать это:
Решение
1) сначала измените Build Action
файла HtAlarms.config
в проекте HtAlarms.Common
на None
, а затем введите HtAlarms.Common.csproj
файл для добавления <pack>true</pack>
под пунктом HtAlarms.config
.
* 105 2 * затем нажмите
pack и перепакуйте ваш проект с именем
HtAlarms.Common.nuget
.
2) , затем введите второй проект HtOpc.Alarms
, сначала удалите старый пакет nuget HtAlarms.Common.nuget
. Во-вторых, очистите кэш Nuget перед установкой нового пакета Nuget HtAlarms.Common.nuget
в HtOpc.Alarms
проект. Это важно в случае, если вы установили неправильную версию nuget. Этот шаг не добавляет <pack>true</pack>
в HtOpc.Alarms.csproj
, и вы можете напрямую упаковать этот новый проект HtOpc.Alarms.nuget
.
3) Для третьего проекта вы можете попробовать выполнить тот же шаг, как второй шаг для установки HtOpc.Alarms.nuget
в HtServer.ServerTemplate
проекте.
Обновление 1
После тестирования я обнаружил, когда я устанавливаю пакет nuget в новый проект, Copy to Output Directory
нового импортированного файла HtAlarms.config
по умолчанию установлено на Never
. И я думаю, что это эффект кнопки «упаковать» и использовать файл по умолчанию xxxx.nuspec
для упаковки вашего проекта, и когда вы используете файл xxx.nuspec
, он игнорирует Copy to Output Directory
файла.
Поэтому, когда вы упаковываете пакет nuget HtAlarms.Common.nuget
, откройте его, а затем добавьте copyToOutput="true"
в файл HtAlarms.Common.nuspec
(используйте zip-инструмент, чтобы открыть HtAlarms.Common.1.0.0.0.nupkg
)
1) добавить этот узел в файл HtAlarms.Common.nuspec
copyToOutput="true"
Кроме того, сохраните эту операцию, очистите кэш Nuget, а затем заново установите HtAlarms.Common.nuget
в проект HtOpc.Alarms
.
Обновление 2
Поскольку вы Я не могу изменить ваш пакет nuget позже, я думаю, вы используете nuget.exe cli , чтобы упаковать ваш проект с файлом xxxx.nuspec
вместо использования кнопки Pack .
Прежде всего, вам необходимо скачать nuget.exe , а затем следовать этому руководству , чтобы сконфигурировать его в переменную окружения, а затем вы можете вызвать nuget в CMD.
1) при упаковке проекта не используйте Pack , откройте CMD, сначала введите путь, по которому существует HtAlarms.Common.csproj (например, cd xxxxxxxx\HtAlarms.Common
).
2) тип nuget spe c для генерации файла описания пакета HtAlarms.Common.nuspec
. В этом файле вы можете назвать идентификатор пакета, версию, автора, описание и т. Д. Так, как хотите для упаковки пакета.
Например, вот так:
Не забудьте добавить contentfiles
узлов и files
узлов в него:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
<projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
<iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>1</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2020</copyright>
<tags>Tag1 Tag2</tags>
<contentFiles>
<files include="Config\NLog\HtAlarms.config" buildAction="None" copyToOutput="true" flatten="true" />
</contentFiles>
</metadata>
<files>
<file src="Config\NLog\HtAlarms.config" target="ContentFiles\any\Config\NLog" />
<file src="Config\NLog\HtAlarms.config" target="Content\Config\NLog" />
</files>
</package>
3) Перед тем, как вводить nuget pack HtAlarms.Common.csproj
в CMD для генерации нового пакета nuget HtAlarms.Common.nuget
, вы должны перестроить свой проект .
Когда вы переустанавливаете его в другой проект, не забудьте сначала очистить кеш nuget.
Затем вы также можете использовать этот формат пакета nuget для HtOpc.Alarms
проекта.
После этого вы можете установить этот пакет nuget непосредственно в проект.