2016-03-30 20 views
3

Ekip çalışmasına dayanamayan ve çözümü çözemeyen bir F # -project var. Teamcity ile inşa ederken fsc için argümanlar bizim için doğru değil gibi görünüyor. Aynı kaynağa el ile çalıştırırsam, her şey iyi çalışır.Bir F # projesi oluştururken başvurular fsc için nasıl yaratılır?

Ne demek istediğimi göstermek için başarısız fsproj-dosyasının içeriğini vereceğiz

(bir büyük proje değil):

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 
    <SchemaVersion>2.0</SchemaVersion> 
    <ProjectGuid>3e68783b-823c-4394-85cb-4a05aa3f3722</ProjectGuid> 
    <OutputType>Library</OutputType> 
    <RootNamespace>SFag.DataRepository</RootNamespace> 
    <AssemblyName>SFag.DataRepository</AssemblyName> 
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> 
    <TargetFSharpCoreVersion>4.4.0.0</TargetFSharpCoreVersion> 
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> 
    <Name>Sfag.DataRepository</Name> 
    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> 
    <TargetFrameworkProfile /> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <Tailcalls>false</Tailcalls> 
    <OutputPath>bin\Debug\</OutputPath> 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    <WarningLevel>3</WarningLevel> 
    <DocumentationFile>bin\Debug\SFag.DataRepository.XML</DocumentationFile> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <Tailcalls>true</Tailcalls> 
    <OutputPath>bin\Release\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <WarningLevel>3</WarningLevel> 
    <DocumentationFile>bin\Release\SFag.DataRepository.XML</DocumentationFile> 
    </PropertyGroup> 
    <ItemGroup> 
    <Reference Include="mscorlib" /> 
    <Reference Include="System" /> 
    <Reference Include="System.Core" /> 
    <Reference Include="System.Numerics" /> 
    </ItemGroup> 
    <ItemGroup> 
    <Compile Include="AssemblyInfo.fs" /> 
    <Compile Include="Tilsynsmyndighet.fs" /> 
    <None Include="Script.fsx" /> 
    <None Include="paket.references" /> 
    <Compile Include="KonsesjonRepository.fs" /> 
    </ItemGroup> 
    <ItemGroup> 
    <ProjectReference Include="..\Sfag.Contracts\Sfag.Contracts.csproj"> 
     <Name>Sfag.Contracts</Name> 
     <Project>{260b3032-028d-417e-acde-1c332744b1bf}</Project> 
     <Private>True</Private> 
    </ProjectReference> 
    </ItemGroup> 
    <PropertyGroup> 
    <MinimumVisualStudioVersion Condition="'$(MinimumVisualStudioVersion)' == ''">11</MinimumVisualStudioVersion> 
    </PropertyGroup> 
    <Choose> 
    <When Condition="'$(VisualStudioVersion)' == '11.0'"> 
     <PropertyGroup Condition="Exists('$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets')"> 
     <FSharpTargetsPath>$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </When> 
    <Otherwise> 
     <PropertyGroup Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets')"> 
     <FSharpTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath> 
     </PropertyGroup> 
    </Otherwise> 
    </Choose> 
    <Import Project="$(FSharpTargetsPath)" /> 
    <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
     Other similar extension points exist, see Microsoft.Common.targets. 
    <Target Name="BeforeBuild"> 
    </Target> 
    <Target Name="AfterBuild"> 
    </Target> 
    --> 
    <Choose> 
    <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.6.1'"> 
     <ItemGroup> 
     <Reference Include="FSharp.Core"> 
      <HintPath>..\packages\FSharp.Core\lib\net40\FSharp.Core.dll</HintPath> 
      <Private>True</Private> 
      <Paket>True</Paket> 
     </Reference> 
     </ItemGroup> 
    </When> 
    </Choose> 
    <Choose> 
    <When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And $(TargetFrameworkVersion) == 'v4.6.1'"> 
     <ItemGroup> 
     <Reference Include="FSharp.Data.SqlClient"> 
      <HintPath>..\packages\FSharp.Data.SqlClient\lib\net40\FSharp.Data.SqlClient.dll</HintPath> 
      <Private>True</Private> 
      <Paket>True</Paket> 
     </Reference> 
     <Reference Include="System.Data"> 
      <Paket>True</Paket> 
     </Reference> 
     <Reference Include="System.Xml"> 
      <Paket>True</Paket> 
     </Reference> 
     </ItemGroup> 
    </When> 
    </Choose> 
</Project> 

msbuild elle biz fsc.exe doğru argümanlar olsun çalıştıran:

C:\Program Files (x86)\Microsoft SDKs\F#\4.0\Framework\v4.0\fsc.exe -o:obj\Release\SFag.DataRepository.dll --debug:pdbonly --noframework --define:TRACE --doc:bin\Release\SFag.DataRepository.XML --optimize+ -r:E:\TeamCity\buildAgent2\work\cd80d924274f60cd\src\packages\FSharp.Core\lib\net40\FSharp.Core.dll -r:E:\TeamCity\buildAgent2\work\cd80d924274f60cd\src\packages\FSharp.Data.SqlClient\lib\net40\FSharp.Data.SqlClient.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\mscorlib.dll" -r:E:\TeamCity\buildAgent2\work\cd80d924274f60cd\src\Sfag.Contracts\bin\Release\Sfag.Contracts.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Core.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Data.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Numerics.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xml.dll" --target:library --warn:3 --warnaserror:76 --fullpaths --flaterrors --subsystemversion:6.00 --highentropyva+ "C:\Users\admtoja1\AppData\Local\Temp\.NETFramework,Version=v4.6.1.AssemblyAttributes.fs" AssemblyInfo.fs Tilsynsmyndighet.fs KonsesjonRepository.fs 
TeamCity biz tam aynı çıktı alamadım yapı çalıştırır

:

C:\Program Files (x86)\Microsoft SDKs\F#\4.0\Framework\v4.0\fsc.exe -o:obj\Release\SFag.DataRepository.dll --debug:pdbonly --noframework --define:TRACE --doc:bin\Release\SFag.DataRepository.XML --optimize+ -r:E:\TeamCity\buildAgent2\work\cd80d924274f60cd\src\packages\FSharp.Core\lib\net40\FSharp.Core.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\mscorlib.dll" -r:E:\TeamCity\buildAgent2\work\cd80d924274f60cd\src\Sfag.Contracts\bin\Release\Sfag.Contracts.dll -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Core.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Data.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Numerics.dll" -r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xml.dll" --target:library --warn:3 --warnaserror:76 --fullpaths --flaterrors --subsystemversion:6.00 --highentropyva+ "E:\TeamCity\buildAgent2\temp\buildTmp\.NETFramework,Version=v4.6.1.AssemblyAttributes.fs" AssemblyInfo.fs Tilsynsmyndighet.fs KonsesjonRepository.fs 

Hata, Teamcity sürümünde FSharp.Data.SqlClient numaralı başvuruya yönelik bir başvuru olmamasıdır. Bu gerçekten garipti çünkü ekip takımının benim çözümümde msbuild'u arayacağını düşündüm.

cevap

0

FSharp.Data.Client bir NuGet paketinden geliyor ve derleme adımından önce NuGet paketlerinin doğru bir şekilde geri yüklenmediğini tahmin edebilirim.

İdaresi bağlantı yoluyla TeamCity üzerinde Nuget etkinleştirme

enter image description here

bir Nuget derleme aşamasından önce adım yüklemek ekle

enter image description here

Umut bu

+0

Tüm paketleri ele almak için paket kullanıyoruz ve bununla ilgiliydi. –

+0

Harika, sizi doğru yönde gösterdiği için memnun oldum. Ben şimdi googling paketim :) –

+0

Kesinlikle, https://fsprojects.github.io/Paket/ paketini aramalı. Nuget paketleri arasındaki sürüm çakışmaları ile başa çıkmanıza yardımcı olur ve ayrıca nuget paketlerinden başka şeylere başvurmanıza da olanak tanır. –

0

Bu muhtemelen edilir yardımcı olur Bir acemi paket hatası.

<Import Project="..\.paket\paket.targets" /> 

Ve bu dosya proje dosyasında doğru yerde olması da önemlidir: biz Visual Studio inşa paketlerin otomatik kararlılığını olmasını istediğimizden bizim proje dosyaları bir satır eklemeniz gerekir.

<Import Project="$(FSharpTargetsPath)" /> 

'un üzerinde yapsaydım, işe yaramadı. Bu yüzden hemen aşağıya koyuyorum ve şimdi her şey bir çekicilik gibi çalışıyor.

İlgili konular