«Добавить как ссылку» для файлов JavaScript, возвращающих 404 в отладке - PullRequest
11 голосов
/ 12 ноября 2010

Используя веб-приложение Visual Studio 2010 ASP.net, у меня есть несколько проектов, которые совместно используют некоторые файлы JavaScript / css. Наиболее логичный способ для них поделиться этими файлами - поместить файлы в одну папку, и в каждом проекте они включены в опцию «Добавить как ссылку». Однако, если я добавляю файлы таким образом, когда я отлаживаю с помощью сервера разработки Visual Studio или отладки с помощью локального веб-сервера IIS, все запросы на эти файлы возвращают ошибки 404 Not Found. Если я опубликую сайт, то файлы будут скопированы, но это явно не поможет с отладкой.

Я что-то упускаю или это сбой VS?

Ответы [ 5 ]

14 голосов
/ 14 сентября 2013

Чтобы решить эту проблему некоторое время назад, я создал пакет nuget ' MSBuild.WebApplication.CopyContentLinkedFiles '.Этот пакет добавляет цель MsBuild, которая копирует все файлы содержимого, добавленные в виде ссылки на папку проекта во время сборки.

Примечание : если вы используете систему контроля версий, то лучше добавить скопированные файлы (из папки веб-приложения), чтобы игнорировать список.

4 голосов
/ 12 ноября 2010

Я бы не стал называть это ошибкой, поскольку вы в первую очередь просили такое поведение: связанные элементы в проектах Visual Studio являются действительными ссылками на внешние файлы.Эти файлы могут находиться в любом месте на диске и не копироваться в папку проекта.

Возможно, вы захотите самостоятельно скопировать эти файлы во время события перед сборкой .Таким образом, файлы останутся синхронизированными, и вы не будете дублировать их до первой компиляции.

0 голосов
/ 09 марта 2015

Кажется, проблема в том, что веб-сайт запускается прямо из исходных папок, а не из папки bin.Это означает, что файл будет отсутствовать, независимо от того, будет ли он скопирован в выходную папку.

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

Добавление команды копирования перед сборкой сработало.Обратите внимание, что текущим каталогом будет папка bin.(Вы можете использовать cd, чтобы отобразить текущий каталог в окне сборки, если вы хотите его увидеть):

Если файл находится в другом решении, ваша команда будет выглядеть примерно так (три .. с: по одной из каждой папки bin, project и solution):

copy ..\..\..\OtherSolution\OtherProject\Scripts\MyJSFile.js ..\Scripts\

Если это то же решение, но другой проект:

copy ..\..\OtherProject\Scripts\MyJSFile.js ..\Scripts

Одна незначительная проблемаявляется то, что ссылка на файл будет конфликтовать с новой копией файла, даже если вы не добавите его в свой проект.Пока вы делаете ссылку в первую очередь, кажется, работает.Если вы сначала скопировали файл, вам придется вручную удалить копию, а затем обновить обозреватель решений, прежде чем добавлять ссылку.

0 голосов
/ 31 июля 2014

Смотрите этот пост в блоге о простом добавлении к вашему файлу проекта.http://mattperdeck.com/post/Copying-linked-content-files-at-each-build-using-MSBuild.aspx

0 голосов
/ 18 ноября 2010

Выберите ссылку в обозревателе решений, а затем посмотрите на окно свойств и установите для параметра «Копировать в выходной каталог» значение «Всегда копировать». По умолчанию для связанных элементов установлено значение Не копировать.

Кстати, вы можете очень легко скопировать многие файлы в виде ссылок непосредственно из Solution Explorer при использовании расширения VSCommands 2010 .

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