C # Использование ссылок / библиотеки классов в общем проекте - PullRequest
0 голосов
/ 01 июля 2019

Я только что изучил и создал общий проект в visual studio 2017. Я заметил, что общий проект не имел «Ссылка» для ссылки на другие ресурсы (другие проекты, библиотека классов,…).Я даже взглянул на файл .shproj и увидел, что он импортирует только тот класс, который я создал внутри общего проекта.

Моя проблема в том, что если я хочу создать приложение-надстройку, мне нужно использоватьбиблиотека классов для вызова необходимого API, предоставляемого исходным программным обеспечением.Как я могу сослаться / добавить другой проект / библиотеку классов (или ресурсы в целом) в мой общий проект?Или это вообще возможно?

Часть моей проблемы также описана здесь ссылка на общий проект из другого общего проекта

Но мне нужно более общее решение,Спасибо всем за помощь.

Ответы [ 2 ]

2 голосов
/ 01 июля 2019

Короче говоря: общие проекты не работают, и реально не может работать таким образом.

В Visual Studio общий проект - это просто контейнер для файлов - исходного кода, ресурсов и т. Д. - которые вы можете добавить в другие проекты. Это может быть полезно в некоторых случаях, когда вы хотите иметь один и тот же код (и т. Д.) В нескольких проектах, не помещая этот код в библиотеку.

Общие проекты не имеют ссылок, не имеют пакетов NuGet или чего-либо еще, только файлы, которые они содержат. У них даже нет данных конфигурации, необходимых для компиляции любых исходных файлов, которые они содержат, и компилятор не будет выполнять большую проверку содержимого, если общий проект не включен в какой-либо полный проект.

И поскольку общий проект не имеет никакого способа указания ссылок или пакетов, вам нужно будет добавить эти ссылки и пакеты в каждый проект, который ссылается на общий проект. Компилятор скажет вам довольно быстро, если вы пропустите один.

Хотя было бы неплохо иметь ссылки в общих проектах, оказалось, что все гораздо проще, чем вы думаете. Один и тот же общий проект может быть включен в проекты, предназначенные для различных сред, платформ и архитектур. Допустим, вы создаете некоторый код, который будет работать на iOS, Mono, Windows .NET Framework и .NET Core, с конкретным кодом для каждой цели и некоторым общим кодом. Если вы попытаетесь добавить зависимость NuGet в совместно используемый проект, он взорвется вам как минимум одним из них. То же самое с большинством ссылок. Добавьте все ссылки, необходимые для .NET Core, и вдруг другие проекты не скомпилируются.

1 голос
/ 01 июля 2019

Вам необходимо добавить ссылку в проект, который использует общий проект.

В качестве примера предположим, что у вас есть «Проект A», который ссылается на «Общий проект B», и вам нужно использовать Newtonsoft.Json в «Совместном проекте B». Поскольку вы не можете добавить ссылку на общий проект, вы устанавливаете пакет Newtonsoft Nuget в Project A , и ваш код в «Shared Project B» будет автоматически скомпилирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...