Как остановить Visual Studio, добавляющую блоки к моему web.config?

Просто используйте win32 API Контрольной суммы. MD5 является собственным в Win32.

24
задан Glorfindel 20 April 2019 в 22:50
поделиться

15 ответов

Я бы начал с проверки состояния использования в ваших файлах кода, а также любых ссылок в ваших файлах .aspx, .ascx. Похоже, вы упомянули некоторые из них (я знаю, что некоторые из них добавляются по умолчанию из шаблонов добавления новых элементов.

-3
ответ дан 29 November 2019 в 00:22
поделиться

Удалить ссылки.

  • Если это веб-приложение: вы можете увидеть ссылки в Обозреватель решений .

  • Если это веб-сайт: щелкните правой кнопкой мыши проект в обозревателе решений и выберите Страницы свойств . Управляйте ими здесь.

HTH

1
ответ дан 29 November 2019 в 00:22
поделиться

Я не верю, что вы можете запретить Visual Studio автоматически добавлять ссылки на сборки, на которые ссылаются другие.

Одним из решений является создание проекта веб-установки с настраиваемым действием, которое автоматизирует удаление этих нежелательных ссылок на сборку из web.config .

0
ответ дан 29 November 2019 в 00:22
поделиться

Это все сборки, необходимые для вашего проекта, в той или иной форме или поместье, а также вспомогательные средства компиляции, которые ASP.NET выполняет на ваших страницах во время выполнения. Вероятно, они импортируются либо кодом, который вы используете в своем проекте, либо другой библиотекой, которая их использует.

Но согласно документации . Это сборки, определенные в вашем глобальном файле web.config, который можно найти в C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG :

<assemblies>
    <add assembly="mscorlib" />
    <add assembly="System, ..." />
    <add assembly="System.Configuration, ..." />
    <add assembly="System.Web, ..." />
    <add assembly="System.Data, ..." />
    <add assembly="System.Web.Services, ..." />
    <add assembly="System.Xml, ..." />
    <add assembly="System.Drawing, ..." />
    <add assembly="System.EnterpriseServices, ..." />
    <add assembly="System.Web.Mobile, ..." />
    <add assembly="*" />
</assemblies>

Если вы посмотрите, есть ] assembly = "*" добавляется ссылка. И если вы читаете документацию об этой команде, там говорится:

При желании вы можете указать звездочка (*) подстановочный знак для добавления каждое собрание в частном кеш сборки для приложения, который находится либо в папке \ bin подкаталог приложения или в установка .NET Framework каталог (% systemroot% \ Microsoft.NET \ Framework \ version).

Это означает, что любая сборка в вашем каталоге / bin или в каталоге установки .NET Framework уже будет включена.

Что это говорит мне о вашей проблеме, так это то, что те сборки, которые включаются, уже каким-то образом связаны с вашим проектом. И они, вероятно, исходят из сетевой библиотеки Avatar Dot или некоторых элементов управления на вашей странице. Проверьте папку «Ссылки» в вашем проекте Visual Studio в библиотеке аватаров, чтобы найти эти ссылки, которые вам не нужны. Потому что именно отсюда процесс сборки получает эти библиотеки.

Другими словами, если вы не хотите, чтобы они включались, очистите ваши проекты, на которые есть ссылки, от всех ссылок на эти библиотеки.

В качестве альтернативы вы можете использовать XML-анализатор MSBuild, чтобы отбрасывать этот раздел файла web.config каждый раз при запуске процесса сборки. Лично я использую задачу под названием XmlUpdate для изменения определенных частей моего файла web.config, чтобы подготовить его к работе. Если вы хотите сделать то же самое, это часть Задач сообщества MSBuild .

0
ответ дан 29 November 2019 в 00:22
поделиться

Извините, вы не можете запретить Visual Studio добавлять сборки в ваш web.config , но еще не все потеряно.

Я уже сталкивался с этим в прошлом; кто-то добавил ссылки (включая WinForms) на сборку доступа к данным низкого уровня. На веб-сайте использовалась сборка доступа к данным низкого уровня, и поэтому в файл web.config были добавлены WinForms и т. Д.

Решением было переместить его код в правильную сборку и удалить неправильную ссылку.

Если вы можете не сортировать, как сборка, имеющая нежелательные ссылки, и вы знаете, что не вызываете код, который зависит от нежелательных ссылок. Затем вы можете (ничего из этого плохого)

  • написать настраиваемое действие установки, которое автоматизирует удаление этих нежелательных ссылок на сборки из Интернета. config
  • Напишите настраиваемое действие MSBUILD, которое нужно удалить, а затем во время сборки
  • Используйте другой рукописный файл web.config при установке приложения.

Чтобы понять, почему Visual Studio, потребуется много времени. добавляет ссылку на файл web.config. Вы должны вручную проверить КАЖДУЮ сборку, которая используется напрямую или косвенно веб-сайтом.

1
ответ дан 29 November 2019 в 00:22
поделиться

Если общая сборка ссылается на них, они также будут добавлены в вызывающий проект.

Поскольку библиотека Avatar делает эти другие ссылки, Visual Studio добавляет эти ссылки в основной проект также. В противном случае вызов библиотеки Avatar может завершиться ошибкой, поскольку необходимая ссылка отсутствует.

1
ответ дан 29 November 2019 в 00:22
поделиться

Преобразование вашего проекта «Веб-сайт» в проект «Веб-приложение».

«Веб-сайт» не имеет файла проекта, поэтому он содержит все ссылки на сборки в Интернете. config. «Веб-проект» имеет файл проекта, и все ссылки хранятся в файле проекта.

2
ответ дан 29 November 2019 в 00:22
поделиться

У меня была эта проблема с Visual Studio 2005 (но я рад сообщить, что решение работает для VS 2008, см. Полужирный текст ниже). Есть раздел реестра, который VS проверяет перед добавлением сборок в файл web.config.

Вот ключ:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}\FilteredGACReferences

Итак, допустим, вы не хотите, чтобы Visual Studio добавляла Microsoft.VisualStudio.Designer. Сборка интерфейсов в ваш web.config. Добавьте следующую запись в реестр, и все готово.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}\FilteredGACReferences\Microsoft.VisualStudio.Designer.Interfaces

У меня все сработало. И да, остальная часть вашей команды должна будет сделать то же самое, но, по крайней мере, вам не нужно каждый раз вручную удалять записи:)

Чтобы это работало для VS 2008 - просто измените 8.0 в реестре путь к 9.0

3
ответ дан 29 November 2019 в 00:22
поделиться

Возможно, "Библиотека Avatar DotNet" сама ссылается на эти сборки. Ссылки ссылочной сборки необходимы для правильного развертывания проекта. В противном случае, как могла бы работать указанная сборка?

Обратите внимание, что возможно, что ваша ссылочная сборка не использует свои собственные ссылки, хотя они существуют.

Изменить: вы можете использовать отличный инструмент ".Net Reflector", чтобы проверить это .

6
ответ дан 29 November 2019 в 00:22
поделиться

см. http://msdn.microsoft.com/en-us/library/ms178728.aspx

там объясняется, что то, что вы видите на странице свойств, - это еще не все, неявные ссылки существуют также в файле Machine.config и добавляются во время компиляции. Надеюсь, это поможет.

0
ответ дан 29 November 2019 в 00:22
поделиться

Если вы работаете на компьютере Vista или Server 08, вы можете использовать утилиту командной строки appcmd, чтобы удалить его после восстановления, а не вручную.

http://technet.microsoft.com/en-us/library/cc772200 (WS.10) .aspx http://learn.iis.net/page.aspx/114/getting-started- with-appcmdexe /

0
ответ дан 29 November 2019 в 00:22
поделиться

Я знаю и ценю, почему Microsoft изобрела веб-сайты в ASP.NET 2.0, но иногда они просто отстой . Если это удобно для вас, преобразуйте свой сайт в проект веб-приложения, и подобные проблемы исчезнут.

Если это нецелесообразно для вас, попробуйте переразложить как можно больше кода в отдельную библиотеку классов. проект. Любые ссылки, которые вы можете переместить с веб-сайта в библиотеку классов, сократят количество изменений web.config .

РЕДАКТИРОВАТЬ: Чтобы уточнить, на веб-сайте компилятор aspnet компилирует все (разметка, код программной части, партия), поэтому все ссылки на сборку должны идти в web.config . Однако в проекте веб-приложения компилятор C # или VB компилирует файлы кода программной части в отдельную DLL, на который затем ссылается компилятор aspnet при компиляции разметки. В этом сценарии сборки, на которые ссылаются только в файлах кода программной части , будут помещены в DLL-библиотеку кода программной части и вообще не будут касаться web.config . Только сборки, на которые напрямую ссылаются в разметке , попадут в web.config .

1
ответ дан 29 November 2019 в 00:22
поделиться

Вы не можете запретить Visual Studio добавлять сборки в ваш web.config.

1
ответ дан 29 November 2019 в 00:22
поделиться

Что ж, это может показаться взломом, но, учитывая ваши требования, другим вариантом будет динамическая загрузка сборки Avatar с помощью Assembly.Load или LoadFrom во время выполнения. Это убережет ссылку от основного проекта и предотвратит появление дополнительных ссылочных строк в web.config. Это было бы действительно практично, только если бы вы использовали только небольшое количество классов из проекта Avatar. Я бы сделал третий проект, на который ссылались оба проекта, который содержал интерфейсы, реализованные одним или несколькими классами Avatar, чтобы основной проект поддерживал строгую типизацию при обработке экземпляров Avatar. Я допускаю, что это может быть намного больше работы, чем ранее представленные ответы. Если вас интересует этот метод, поищите в Google для создания плагинов в .Net

1
ответ дан 29 November 2019 в 00:22
поделиться

Пока вы используете веб-сайт, а не веб-приложение, я не знаю, как помешать Visual Studio добавлять сборки в ваш web.config. Такая же проблема возникает и с решениями моей компании.

1
ответ дан 29 November 2019 в 00:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: