. Net проект всегда перестраивается, не в актуальном состоянии, вызванном свойством CopyLocal - PullRequest
1 голос
/ 20 февраля 2020

Независимо от того, что я делаю, мой. net Проект всегда будет перестраиваться. Я прочитал эту статью https://oz-code.com/blog/visual-studio-keeps-rebuilding-projects-no-good-reason/ и обнаружил проблему CopyLocal в своем проекте.

Я получил это сообщение: Project 'PROJECTNAME' is not up to date. CopyLocal reference 'D:\...PROJECTPATH...\bin\x64\Debug\System.Net.Http.dll' is missing from output location..

Моя система. * 1031 На * .Http.dll ссылаются следующим образом (не спрашивайте меня, почему значение Private установлено дважды): .csproj reference

Visual Studio сама показывает, что оно взято из «Справочных сборок». ": enter image description here

И, как я выяснил, сборки, взятые из" Справочных сборок ", никогда не копируются в выходную папку.

Теперь проблема, если Я изменяю CopyLocal на false, он работает, но после любого восстановления NuGet ему снова будет присвоено значение True. Я предполагаю, что это связано с тем, что HintPath ссылается на пакет NuGet, где для CopyLocal должно быть установлено значение True.

Это происходит только со ссылками "System. *". Проект. net 4.8, и я использую последний VS2019.

Есть ли способ предотвратить это, или я что-то упустил, как я могу это исправить? Это происходит в довольно большом решении, и на его создание уходит вечность, если все постоянно перестраивается.

Я попробовал ReSharper-Build, и это сработало, но если возможно, я бы хотел придерживаться стандарта.

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 21 февраля 2020

Есть ли способ предотвратить это, или я что-то упустил, как я могу это исправить? Это происходит в довольно большом решении, и для его построения требуется вечность, если все постоянно перестраивается.

Как сказал Ганс , вы ссылаетесь на два system.net.http.dll в одном и том же Проектировать по-разному, так что это создает беспорядок сборки, что делает невозможным определить версию ссылки. И это всегда перестраивает.

На самом деле, System.Net.Http.dll является просто частью Net Framework4.8 и существует в Справочных сборках .

Все это указывает на тот факт, что это глобальная DLL-библиотека publi c, которую можно использовать непосредственно в VS без необходимости устанавливать ее с помощью nuget. Поэтому мне любопытно, почему вы все еще используете nuget для его установки.

Примечание : Когда вы создаете новый проект net frameowrk4.8, а затем открываете ссылку, вы обнаружите, что он уже ссылки system.net.http.dll из справочных сборок. Поэтому, когда вы используете nuget для установки или использования пути nuget в HintPath, он не изменит начальный путь.

Решение

Для решения удалите пакет nuget System.Net.Http. Щелкните правой кнопкой мыши проект -> Manage Nuget Packages -> удалите его.

enter image description here

Надеюсь, это поможет вам.

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