2013-10-10 3 views
1

Я полностью потрясен этим. Идеи, которые я обнаружил через переполнение стека google, не работают для меня, и я понятия не имею, почему.System.Web.Helpers не публикуются Visual Studio 2012

Недавно мы обновили проект до Visual Studio 2012 и MVC 4 с .NET 4.5, и теперь он не будет опубликован правильно.

У нас есть еще одна ветка, которая имеет проект публикации в Visual Studio 2012 без обновления до MVC4 или .NET4.5, и это похоже на работу, поэтому я предполагаю, что это не проблема с Visual Studio. Просто что-то с тем, как MVC 4 настроен в нашем проекте. MVC 3 был добавлен путем ссылки на библиотеки DLL непосредственно из папки lib, которую мы создали в исходном элементе управления (но вне любых проектов). MVC 4 добавляется через NuGet.

Проблема в том, что System.Web.Helpers (среди других) не отображаются в каталоге bin опубликованного приложения. Это означает, что когда он помещается на тестовый сервер, он не будет запущен, поскольку отсутствует DLL.

  • Я установил Копировать локально, чтобы быть ИСТИННЫМ (на самом деле это уже было, но я включил, если выключен и включен снова). Я также где-то читал, что если файл существует в GAC, не имеет значения, что этот параметр, он не будет копировать. Тем не менее, я проверил, и это не в GAC.
  • Я убедился, что ссылка в приложении MVC указывает на версию файла в папке пакетов NuGet. (Это было не изначально, но я вручную отредактировал файл csproj, чтобы сделать это, поскольку удаление и чтение пакета NuGet не помогло)
  • Я добавил событие после сборки, чтобы скопировать соответствующие файлы (которые не влияет на публикацию, хотя они находятся в каталоге bin проекта)
  • Я попытался поместить папку _bin_deployableAssemblies на место, согласно Phil Haack's blog, но похоже, что это doesn't work in Visual Studio 2012.
  • Я пробовал модифицировать файл csproj (который является только файлом MSBuild), чтобы скопировать соответствующие файлы для меня, as per this SO answer. Но по какой причине, которая тоже не хочет работать.

У меня закончились вещи, которые я могу попробовать. Ну, я всегда могу скопировать файл вручную, поскольку некоторые ответы SO предложили в другом месте, но это побеждает цель.

Любые идеи?

UPDATE

Добавлено больше вещей в пунктах маркированного выше для вещей, которые я пробовал, не работает для меня.

ответ

0

Я нашел ответ. Это немного взломать, потому что я не мог заставить команду копирования MSBuild работать, поэтому я использовал команду Exec, чтобы сделать xcopy для копирования для меня.

Прежде всего, я добавил в проект папку с именем _bin_PublishAssemblies и разместил там сборки, которые мне нужно опубликовать, что процесс сборки уже не собирает.

Затем я добавил следующее к концу файла csproj:

<Target Name="AfterBuild"> 
    <Message Text="Build | Copying assemblies to output folder ($(OutputPath))" Importance="high" /> 
    <Exec Command="ECHO Going to copy from '$(ProjectDir)\_bin_PublishAssemblies'" /> 
    <Exec Command="xcopy $(ProjectDir)\_bin_PublishAssemblies\* $(OutputPath) /Y" /> 
    </Target> 
    <Target Name="CopyBinFiles" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish"> 
    <Message Text="Deploy | Copying assemblies to output folder ($(_PackageTempDir)\bin\)" Importance="high" /> 
    <Exec Command="ECHO Going to copy from '$(ProjectDir)\_bin_PublishAssemblies'" /> 
    <Exec Command="xcopy $(ProjectDir)\_bin_PublishAssemblies\* $(_PackageTempDir)\bin\ /Y" /> 
    </Target> 
0

Как об этом:

  1. правой кнопкой мыши на проекте MVC в обозревателе решений.
  2. Добавить Выдвижных зависимости
  3. Tick MVC
+0

У меня нет такой возможности. Я читал об этом в блоге Фила Хаака, и я пробовал операцию вручную, но в VS любом случае он не работает на VS 2012 в соответствии с этим: http://stackoverflow.com/questions/12389368/using-bin-deployableassemblies-with- зрительно-студия-2012 –