web-dev-qa-db-ja.com

エラーMSB4102:要素<Import>の "Project"属性の値 ""が無効です。パラメータ「パス」の長さをゼロにすることはできません。 F#

チームシティでプロジェクトを構築しているときに、次のエラーが発生します。

同じプロジェクトがローカルマシンでビルドされています。ローカルマシンにはVS2015とF#4.0があります。

私のプロジェクト構成は以下の通りです。

<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')" />


    <Choose>
        <When Condition="'$(VisualStudioVersion)' == '11.0'">
          <PropertyGroup Condition="Exists('$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\4.0\Framework\v4.0\Microsoft.FSharp.Targets')">
            <FSharpTargetsPath>$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\4.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)" />

これはコンソールアプリケーションです。

10
Kunal Shah

管理者権限でローカルマシンを実行していたため、しばらく前に同様の問題が発生しましたが、Visual Studioインストーラーは、管理者が使用するuserレベルではなくsystemレベルで環境変数を設定していました。を使用します。そのため、管理者としてコンパイルするときに、FSharpTargetsPathVisualStudioVersionなどの環境変数から正しく構築されていませんでした。

ローカルマシンを調べて、正常に使用しているレベル(システムまたはユーザー)でVisualStudioVersionに設定されている環境変数の値、およびその他の変数を確認し、これらが対応するに設定されていることを確認します。チームシティマシンのレベル。

おそらく、ローカルマシンではuserとして実行し、TeamCityマシンではSystemとして実行しています。

詳細はこちらをご覧ください: https://stackoverflow.com/a/21420306/152739

これが理にかなっていることを願っています。

5
Scott