2014-12-31 14 views
6

W naszym środowisku mamy farmę serwerów, każdy serwer wykonuje wiele zadań. Pakiety binarne zadania są wdrażane (a zadania uruchamiane) z wewnętrznym systemem planowania.Czy istnieje pakiet redystrybucyjny w pakiecie z FSharp.Core 4.3.0.0?

Po wprowadzeniu nowej, wspólnej zależności od biblioteki lub środowiska wykonawczego Microsoft, zależność ta jest zwykle przekazywana jako aktualizacja całego serwera (na przykład pakiet redystrybucyjny Microsoft Visual C++). Obecnie na serwerach zainstalowany jest pakiet o nazwie Microsoft Visual F # 2.0 Runtime, a także wersja FSharp.Core 4.0.0.0 w GAC, z której nie mam pojęcia skąd, ale FSharp.Core 4.3.0.0 nie jest powszechnie dostępny.

Czy istnieje pakiet redystrybucyjny dla Visual F # 3.0, który wdrożył FSharp.Core 4.3.0.0 w GAC, czy zamiast tego powinniśmy dołączyć kopię pliku FSharp.Core.dll z każdym plikiem binarnym zadania? W istocie, uniknęłbym, jeśli to możliwe, setek kopii wspólnej biblioteki DLL.

Odpowiedz

1

Prawdopodobna odpowiedź

Byłbym szczęśliwy być nie tak i chętnie usunąć tę odpowiedź, ale muszę stwierdzić, nie ma redystrybucyjny pakiet istnieje, że zainstalować kopię całego systemu z FSharp.Core wersja 4.3.0.0 do GAC.

Hack wokół kwestii

Poniższy skrypt WIX tworzy pakiet MSI, który instaluje montaż i NGen to. Oczywiście testowanie było ograniczone, więc używaj go tylko wtedy, gdy naprawdę potrzebujesz pakietu MSI do rozwinięcia zespołu. Aby wyraźnie rozproszyć wszelkie wskazówki dotyczące możliwych problemów z prawami autorskimi, udostępniam ten kod do domeny publicznej.

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    This installs FSharp.Core.dll 4.3.0.0 (that comes with Visual Studio 
    2012) into the GAC and then NGens it for both 32 and 64 bits. 

    Component ID 61F15BE3-6844-46F3-8E8E-3C81A8DBBFCB and keypath 
    FSharp_Core_Dll_GAC_File were obtained from VS2012 RTM install DVD, 
    file \packages\professionalcore\Setup\vs_professionalcore.msi. 
    Other IDs here match those in the Microsoft file for easier reference. 
--> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:netfx ="http://schemas.microsoft.com/wix/NetFxExtension"> 
    <Product Id="*" Name="Microsoft F# 3.0 Core Redistributable (4.3.0.0)" Language="1033" Version="4.3.0.0" 
      Manufacturer="YOUR COMPANY HERE" UpgradeCode="5271a7ee-8baa-4348-aff7-edb114090cee"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 
    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <Property Id="ARPNOMODIFY" Value="yes" Secure="yes" /> 
    <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> 
    <Feature Id="FsCore" Title="Microsoft F# Core Libraries" Level="1"> 
     <ComponentRef Id="Redist4.0_GAC_FSharp.Core.dll" /> 
    </Feature> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="GAC" Name="GAC"> 
     <Component Id="Redist4.0_GAC_FSharp.Core.dll" Guid="61F15BE3-6844-46F3-8E8E-3C81A8DBBFCB"> 
      <File Id="FSharp_Core_Dll_GAC_File" Name="FSharp.Core.dll" KeyPath="yes" Assembly=".net" 
       Source="C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0\FSharp.Core.dll"> 
      <netfx:NativeImage Id="FSharp_Core_Dll_GAC_File_32" Platform="32bit" Priority="1" Debug="no" Dependencies="no" /> 
      <netfx:NativeImage Id="FSharp_Core_Dll_GAC_File_64" Platform="64bit" Priority="1" Debug="no" Dependencies="no" /> 
      </File> 
     </Component> 
     </Directory> 
    </Directory> 
    </Product> 
</Wix> 

Skopiuj skrypt do pliku fscore.wxs, sprawdź ścieżkę do zainstalowanego zespołu odniesienia i wygenerować plik MSI jako (również ustawić ścieżki do Wix instalację)

candle -ext "C:\Program Files (x86)\WiX Toolset v3.9\bin\WixNetFxExtension.dll" fscore.wxs 
light.exe -ext "C:\Program Files (x86)\WiX Toolset v3.9\bin\\WixNetFxExtension.dll" -out FSCoreRedist4300.msi -spdb -sval fscore.wixobj 
2

Istnieje tylko NuGet Package dla tylko FSharp.Core i a redistributable package, który zawiera również narzędzia kompilatora.

+0

Były nie jest bardzo istotne, ponieważ nie możemy używać pakietów NuGet do aktualizacji serwerów. Aby wyjaśnić, czy ten drugi * pakiet redystrybucyjny powinien być zainstalowany na serwerze? Nie potrzebujemy narzędzi kompilujących na serwerach. Czy nie ma pakietu bez narzędzi? – kkm

+0

Oczywiście można używać pakietów NuGet do aktualizacji serwerów. Są to po prostu pliki zip - napisz skrypt, aby wyodrębnić złożenia do GAC, jeśli nie możesz znaleźć jednego już napisanego. Pakiet NuGet jest pakietem bez narzędzi. [Witamy w przyszłości.Rozwój NET] (http://blog.maartenballiauw.be/post/2014/12/19/Building-future-NET-projects-is-quite-pleasant.aspx). Osobiście dokonamy redystrybucji pliku FSharp.Core.dll z innymi naszymi zależnościami. –

+0

Przepraszamy, ale odpowiedź jest nieprawidłowa. Właśnie zainstalowałem pakiet redystrybucyjny 3.1.2, jak sugerowałeś, i dodał dwie wersje FSharp.Core do GAC: 2.3.0.0 i 4.3.1.0. Nasze aplikacje nadal nie mogą się załadować podczas próby połączenia z 4.3.0.0. Wygląda na to, że z tym pakietem nie są zainstalowane zasady przekierowania maszyn. – kkm

2

Pobierz link w odpowiedzi Joela Muellera (również here) jest oficjalnym instalatorem firmy Microsoft. Zawiera kompilator, interaktywne, wiele wersji środowiska wykonawczego oraz pliki binarne integracji Visual Studio.

Bity integracji VS są wdrażane tylko w przypadku zainstalowania usługi VS (scenariusz dewelopera). W przeciwnym razie po prostu zainstaluje kompilator/interaktywne/runtime (scenariusz serwera).

Tylko instalator zatwierdza tylko najnowszą wersję środowiska wykonawczego (obecnie 4.3.1.0), ale wdrożono także różne inne wersje, w tym wersję 4.3.0.0.

Dodawanie złożeń do GAC jest bardzo łatwe. Po prostu uruchom gacutil /I "C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.3.0.0\FSharp.Core.dll" jako admin.

+0

Problem polega na tym, że nie ma "gacutil" na serwerach, ponieważ jest to narzędzie SDK. Zdarzało mi się używać tego samego rozszerzenia [rozszerzenia powłoki] (https://powershellgac.codeplex.com/), które również zasugerował, i to rozszerzenie może instalować złoŜenia na GAC. Ale nie jest to zautomatyzowany sposób wdrażania zmian. Wiem, że IT może wprowadzać aktualizacje w postaci plików wykonywalnych i MSI. – kkm

Powiązane problemy