Nano Hash - криптовалюты, майнинг, программирование

Встроить Interop Types в false в пакете NuGet

В моем проекте есть сборка, на которую мне нужно ссылаться, и для успешной компиляции для параметра «Встроить типы взаимодействия» должно быть установлено значение false. Если я не поставлю эту опцию, я получаю ошибку времени компиляции:

A reference was created to embedded interop assembly 'Interop.MSTSCLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because of an indirect reference to that assembly created by assembly 'AxInterop.MSTSCLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Consider changing the 'Embed Interop Types' property on either assembly.

Если бы у меня был просто проект, я бы установил для параметра значение false и никогда не беспокоился об этом, но теперь, когда я делаю с ним пакет nuget, я пытаюсь найти способ установить параметр при добавлении пакета.

Мой файл nuspec в настоящее время имеет это (исключая метаданные):

<files>
  <file src="Interop.MSTSCLib.dll" target="lib\net40" />
  <file src="AxInterop.MSTSCLib.dll" target="lib\net40" />
</files>

Я просмотрел документацию nuget, но не смог найти, как это сделать. Это вообще возможно?

21.09.2017

Ответы:


1

Вам понадобится install.ps1 в каталоге инструментов, например

param($installPath, $toolsPath, $package, $project)

$project.Object.References | Where-Object { $_.Name -eq "Interop.MSTSCLib" } |  ForEach-Object { $_.EmbedInteropTypes = $false }
$project.Object.References | Where-Object { $_.Name -eq "AxInterop.MSTSCLib" } |  ForEach-Object { $_.EmbedInteropTypes = $false }

На основе вопроса Может ли NuGet распространять COM-dll? и ответ. Эта разница заключается в том, что вам не нужен вызов regsvr32, поскольку вы не пытаетесь распространять и регистрировать com dll.

21.09.2017
  • Удивительно, хотя кажется, что install.ps1 больше не поддерживается. Вместо этого я использовал init.ps1 и вставил его в tools, и все заработало отлично! 22.09.2017
  • Судя по этой ошибке, будущее поддержки install.ps1 кажется неопределенным. Если в вашем проекте используется узел PackageReference, будет поддерживаться только файл init.ps1. Поддержка узла PackageReference в настоящее время ограничена. для нескольких типов проектов (.Net Core, .Net Standard и UWP в Visual Studio 2017). 25.09.2017
  • Рекомендуемый способ сделать это — использовать поддержку Nuget для целевых файлов MSBuild. См.: Nuget.Samples.Interop. 21.06.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..