2015-04-15 5 views
0

Я попытался преобразовать следующие powershell script для развертывания проекта SSIS 2012 в сценарий F #.Ошибка сборки сборки смешанного режима в F # Интерактивный

Кажется, я получаю следующее сообщение об ошибке при попытке запустить и это через F # Interactive при оценке) линии catalog.Create (:

System.IO.FileLoadException: Смешанный режим сборка построена на версию «v2 .0.50727 'среды выполнения и не может быть загружен в среду выполнения 4.0 без дополнительной информации о конфигурации. в Microsoft.SqlServer.Management.IntegrationServices.Catalog.CheckDatabase (IntegrationServices магазин) в Microsoft.SqlServer.Management.IntegrationServices.Catalog.Create (Boolean execSsisStartup) в. $ FSI_0007.main @() Остановленный из-за ошибки

Я запускаю это с помощью Microsoft Visual Studio Express 2012 для Интернета. Может ли быть, что F # interactive работает под 4.0 вместо 2.0 runtime? Может ли это как-то измениться?

Начало сценария я преобразованного можно увидеть ниже:

// Variables 
module Global = 

    let projectFilePath = @"C:\Projects2012\Internal Reporting\SourceControl\RKN BI DataWarehouse Solution\Releases\Release 1.1.1\SSIS\SSIS Dynamics CRM Staging Load.ispac" 
    let projectName = "SSIS Dynamics CRM Staging Load" 
    let folderName = "RKNBI" 
    let environmentName = "Dev" 

// Load the IntegrationServices Assembly 
#r "Microsoft.SqlServer.Management.Sdk.Sfc" 
#r "Microsoft.SqlServer.Management.IntegrationServices" 
#r "Microsoft.SqlServer.Smo" 
#r "Microsoft.SqlServer.ConnectionInfo" 

open System.Data 
open Microsoft.SqlServer.Management.Sdk.Sfc 
open Microsoft.SqlServer.Management.IntegrationServices 
open System.IO 

printfn "Connecting to server ..." 

// Create a connection to the server 
let sqlConnectionString = "Data Source=localhost;Initial Catalog=master;Integrated Security=SSPI;" 
let sqlConnection = new SqlClient.SqlConnection(sqlConnectionString) 

// Create the Integration Services object 
let integrationServices = IntegrationServices(sqlConnection) 

printfn "Removing previous catalog ..." 

// Drop the existing catalog if it exists 
if (integrationServices.Catalogs.Count > 0) then 
    integrationServices.Catalogs.["SSISDB"].Drop() 
else 
    () 

printfn "Creating new SSISDB Catalog ..." 

// Provision a new SSIS Catalog 
let catalog = Catalog(integrationServices, "SSISDB", "SUPER#secret1") 
catalog.Create() 
+0

Изучите переадресацию сборки в файле .config или создайте в зависимости от того, какие библиотеки вы в зависимости от того, которые построены против 2.0 из источника. – ildjarn

+0

попробуйте использовать журнал слияния, чтобы выяснить, какая версия FSharp.Core загружается, что ответит на ваш вопрос надежно. Версия W.X.Y.Z означает, что F # версия X.Y.Z работает против .net версии W. Так что, если вы видите что-то вроде 4.x.y.z, оно работает против .net 4. –

ответ

1

на основе this question, вы должны быть в состоянии работать вокруг этого путем добавления ниже внутри <configuration> узла %programfiles(x86)%\Microsoft SDKs\F#\3.0\Framework\v4.0\fsi.exe.config

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0"/> 
</startup> 
+0

Это похоже на работу! Знаете ли вы, что это повлияет на запуск будущих скриптов через fsi, если я просто оставлю это изменение конфигурации? Я нашел эту ссылку [https://code.msdn.microsoft.com/3DVisualization-Visual-79471042/sourcecode?fileId=18993&pathId=995930383), которая может работать только локально, а не глобально через изменение конфигурации. – jeremyh

+0

AFAIK это не вызовет проблем, хотя могут быть и случаи с краем. Трюк во время выполнения выглядит интересным. – latkin

Смежные вопросы