Пути ссылки на веб-сайт Visual Studio
В проектах веб-проектов Visual Studio (в Visual Studio 2005 или более поздних версиях, а не в проектах веб-приложений, где есть файл .csproj), как хранится эталонная информация, и можно ли управлять исходным кодом без сохранения скомпилированных двоичных файлов в источнике контроль?
Если вы щелкните правой кнопкой мыши проект веб-сайта и выберите "Страницы свойств", на первом экране ( "Ссылки" ) будут указаны все ссылки на проект.
Системные. * ссылки перечислены как тип GAC, а другие DLL файлы могут быть перечислены как BIN или Project.
Проблема возникает, когда вы включаете что-то в качестве ссылки на проект, а затем передаете ее в исходный элемент управления (для нас, Subversion, игнорирование файлов DLL и .pdb.)
Другой разработчик получает обновленный код из репозитория и должен вручную настроить все эти ссылки на проекты, но я не могу даже определить, где хранится эта информация, если только в этом .suo, который НЕ является дружественным исходным кодом.
Ответы
Ответ 1
Если вы ссылаетесь на DLL по имени файла на вкладке просмотра, должен быть создан файл .refresh(вложенный под dll в BIN). Мы помещаем их в SVN, и он отлично работает (вам, возможно, придется отредактировать их для использования относительных путей).
Ссылки, добавленные с вкладки .NET, добавляются в web.config
Ссылки на проекты хранятся в файле решения (.sln). Откройте файл .sln, и вы увидите их в списке:
Project("{xxxxxxx-7377-xxxx-xxxx-BC803B73C61A}") = "XXXXXXX.Web", "XXXXXXX.Web", "{xxxxxxxx-BB14-xxxx-B3B6-8BF6D8BC5AFF}"
ProjectSection(WebsiteProperties) = preProject
TargetFramework = "3.5"
ProjectReferences = "{xxxxxxxx-C3AB-xxxx-BBED-2055287036E5}|XXXXXX.Data.dll;
...
Ответ 2
Проекты "Веб-сайт" в Visual Studio - это странная вещь. Они, похоже, пытаются удовлетворить традиционные веб-разработчики, где "сайт" - это всего лишь набор файлов в каталоге. Точно так же, когда вы создаете проект "Веб-сайт" в Visual Studio, нет реального "проекта", например, проекты С# имеют файл .csproj. Однако есть файл решения (.sln). Обычно ссылки в сборке .dll сохраняются в файле проекта. Поскольку веб-сайт не имеет одного, куда они идут?
Ссылки на другие проекты
Если вы добавите ссылку на другой проект, запись будет сделана в файле .sln решения. Он выглядит следующим образом:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebSite1", "..\..\WebSites\WebSite1\", "{F25DB9D6-810D-4C18-ACBB-BFC420D33B20}"
ProjectSection(WebsiteProperties) = preProject
TargetFramework = "3.5"
ProjectReferences = "{11666201-E9E8-4F5A-A7AB-93D90F3AD9DC}|ClassLibrary1.dll;"
Ссылки на файловые системы
Если вы просматриваете файловую систему и добавляете DLL файл, Visual Studio создаст файл ".refresh" с тем же именем в папке \Bin. Этот файл представляет собой текстовый файл в 1 строку, который указывает путь, из которого был загружен файл. Так, например, если бы я добавил "MyAssem.dll" из.... \libs, то в папке веб-сайта\Bin у меня получилось бы 2 файла, скопированные там: MyAssem.dll и MyAssem.dll.refresh. Файл .refresh будет содержать текст: "....\libs". В каждой сборке Visual Studio проверяет путь в файле .refresh, и если там есть более новая .dll, она перезапишет ее в каталоге Bin.
Предупреждение. Visual Studio не будет выдавать ошибку, если файл не существует, где файл .refresh говорит ему, чтобы он выглядел. Он просто продолжит использовать .dll уже в папке \Bin. Однако он выдает предупреждение.
Ссылки GAC
Если вы добавите сборку из глобального сборочного кэша, Visual Studio войдет в файл Web.config, например:
<compilation debug="false">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
И снова то, что вам нужно посмотреть здесь, - это то, что Visual Studio предполагает, что если сборка была в GAC на вашем компьютере разработки, то она будет в том же месте во время выполнения! Это может вызвать у вас проблемы, если у вас, возможно, есть Oracle.DataAccess
, установленный на вашем компьютере-разработчике, который будет помещен в GAC, но при развертывании вы просто скопируете DLL на место на производственной машине. Он все равно попытается найти его в своем GAC и может потерпеть неудачу во время выполнения.
Я надеюсь, что это поможет очистить веб-сайты Odundesundunds и как работают ссылки!
Ответ 3
Я использую copyprojectDll.ps1 powershell.
Структура моей папки ниже
- ClassLibraries
ThirdParty
Сайт /Bin
CopyprojectDll.ps1
Website.sln
ClassLibraries - это классы кода для моего проекта DAL..
Проект веб-сайта включает только веб файлы, aspx, aspx.cs..
ThirdParty необходимы библиотеки, AjaxToolkit и т.д.
Я компилирую ClassLibraries.sln
Я запускаю CopyprojectDll.ps1
После этого я использую Website.sln.
Пример файла powershell ниже.
$folders = @();
$ folders + = "IB.Security"
$ folders + = "ClassLibraries/Core.Classes"
функция CopyDllsToWebBin ($ dll_files)
{ if ($ dll_files -eq $null) { вернуть; }
$ targetfolder = "./Kod/bin/"
foreach($dll in $dll_files)
{
copy-item $dll.FullName -destination "$targetfolder" -force #-Verbose
}
}
функция CopyDllsToThirdParty ($ dll_files)
{
$targetfolder = "./ThirdParty/"
foreach($dll in $dll_files)
{
copy-item $dll.FullName -destination "$targetfolder" -force #-Verbose
}
}
$dll_output_folder = "/bin/debug";
foreach ($ папка в $папках)
{ $ dll_files = Get-ChildItem -Path $folder $dll_output_folder -include *.dll -Recurse | sort-object Name CopyDllsToWebBin ($ dll_files) $ dll_files = Get-ChildItem -Path $folder $dll_output_folder -include *.pdb -Recurse | sort-object Name CopyDllsToWebBin ($ dll_files) $ dll_files = Get-ChildItem -Path $folder $dll_output_folder -include *.xml -Recurse | sort-object Name CopyDllsToWebBin ($ dll_files) "Скопированная $папка $dll_output_folder"
}
$dll_files = Get-ChildItem -Path "ThirdParty" -ключить *.dll -Recurse | sort-object Name
CopyDllsToWebBin ($ dll_files)
$ dll_files = Get-ChildItem -Path "ThirdParty" -ключить *.pdb -Recurse | sort-object Name
CopyDllsToWebBin ($ dll_files)
$ dll_files = Get-ChildItem -Path $folder $dll_output_folder -include *.xml -Recurse | sort-object Name
CopyDllsToWebBin ($ dll_files)
"Скопированная третья сторона"
дата