FSharp сайт на общем сервере, какие DLL мне нужно включить в папку bin? - PullRequest
0 голосов
/ 19 февраля 2009

Какие DLL мне нужно включить в папку bin? или мне нужно установить F # на сам сервер?

N.B: Решено

  • Все библиотеки FSharp теперь находятся на сайте Bin
  • Сайт развертывается с использованием параметра публикации из Visual Studio.
    • позволяет обновлять предварительно скомпилированный сайт должен быть не проверен

Ошибка с моего сайта:

Системе не удается найти указанный файл

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

Сведения об исключении : System.ComponentModel.Win32Exception: система не может найти указанный файл

Ошибка источника :

Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

Трассировка стека :

[Win32Exception (0x80004005): The system cannot find the file specified]
   System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) +2097
   System.Diagnostics.Process.Start() +140
   Microsoft.FSharp.Compiler.CodeDom.Internal.Compiler.compileFiles(String args, CompilerResults res) +120
   Microsoft.FSharp.Compiler.CodeDom.Internal.Compiler.compileAssemblyFromFileBatch(CompilerParameters options, String[] fileNames, CompilerResults results, FastFunc`2 sortf) +278
   System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromFile(CompilerParameters options, String[] fileNames) +23
   System.Web.Compilation.AssemblyBuilder.Compile() +843
   System.Web.Compilation.BuildProvidersCompiler.PerformBuild() +164
   System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +267
   System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +582
   System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +93
   System.Web.UI.BaseTemplateParser.GetReferencedType(VirtualPath virtualPath, Boolean allowNoCompile) +325
   System.Web.UI.PageParser.EnsureMasterPageFileFromConfigApplied() +89
   System.Web.UI.PageParser.HandlePostParse() +16
   System.Web.UI.TemplateParser.Parse() +155
   System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType() +105
   System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider) +54
   System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() +182
   System.Web.Compilation.BuildProvidersCompiler.PerformBuild() +29
   System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +267
   System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +582
   System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +93
   System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +111
   System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +54
   System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +31
   System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +40
   System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) +139
   System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +128
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +161

Информация о версии: Microsoft .NET Framework Версия: 2.0.50727.1433; ASP.NET версия: 2.0.50727.1433

Ответы [ 3 ]

1 голос
/ 19 февраля 2009

Если вы «предварительно скомпилируете» веб-сайт с помощью инструмента aspnet_compiler.exe (или с помощью кнопки «Опубликовать» в Visual Studio) без компиляции его как «обновляемого» (это означает, что все файлы ASPX и FS должны быть скомпилированы в DLL ) тогда я думаю тебе понадобится просто:

  • FSharp.Core.dll (содержит основные библиотеки F #, списки, кортежи и т. Д.)
  • возможно, FSharp.PowerPack.dll (как упоминал Роберт)

Другие библиотеки DLL из установки F # не требуются для среды выполнения. Если вы хотите скомпилировать веб-приложение на сервере (используя F # CodeDOM) (то есть развернуть его как обновляемый веб-сайт), вам необходимо установить F # на сервер, и вам понадобятся права для появления "fsc". .exe "(так что это не похоже на случай с общим сервером).

1 голос
/ 19 февраля 2009

Установка F # на сервере определенно излечит ваши проблемы, но в этом нет особой необходимости. Вы определенно подобрали зависимость от FSharp.core.dll, возможно, вы также подобрали зависимость от FSharp.PowerPack.dll, если вы ссылались на нее из своего проекта, а также на любые другие DLL-файлы FSharp. *. ссылались. Как правило, вы можете использовать рефлектор, чтобы узнать, от каких библиотек зависит ваше приложение.

0 голосов
/ 19 февраля 2009

Мне удалось решить эту проблему, сняв флажок разрешить возможность обновления этого предварительно скомпилированного сайта и имея все dll в каталоге.

Спасибо за предложения.

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