2017-11-09 19 views
0

私はMSBuild Version 14.0を使用しています。"型または名前空間の名前が見つかりませんでした"

は、ドキュメントhereに続いて、私が定義され、このように私自身のBuildタスク:

ItemGroup Sの一
<Target Name="Build" 
     Inputs="@(Compile)" 
     Outputs="MyLibrary.dll"> 

     <Csc 
      Sources="@(Compile)" 
      Resources="@(EmbeddedResource)" 
      References="@(Reference);@(ProjectReference)" 
      OutputAssembly="MyLibrary.dll"/> 
</Target> 

、私はプロジェクト参照のリストを持って、例えば:

<ProjectReference Include="..\SubFolder1\SubFolder2\SubFolder3\ProjectReference1.csproj"> 
    <Project>{A3DBEB8E-997D-4F88-A56C-B45647EB5C29}</Project> 
    <Name>ProjectReference1</Name> 
    <Private>False</Private> 
</ProjectReference> 
<ProjectReference Include="..\SubFolder1\SubFolder2\ProjectReference2.csproj"> 
    <Project>{8bd1049a-afe2-44c1-8ecc-020000ec13ab}</Project> 
    <Name>ProjectReference2</Name> 
    <Private>False</Private> 
</ProjectReference> 

私はMSBuild.exe C:\Workspaces\MyProject.csproj /t:buildというコマンドを実行したが、以下のようなエラーメッセージの長いリストを見た。

File1.cs(27,79): error CS0246: The type or namespace name 'Type1' could no 
t be found (are you missing a using directive or an assembly reference?) [C:\Workspaces\MyProject.csproj] 

Type1は、.csprojファイルに含まれるプロジェクト参照の1つで定義されています。

CSCタスクのReferencesフィールドにプロジェクト参照が含まれるように指定していても、なぜMSBuildによってこれらのエラーがスローされますか?私のプロジェクトが成功裏に成立するためにはどうすればよいですか?

答えて

1

Cscを起動するだけでビルドターゲットを定義します。 Cscタスクはcsc.exeの周りのラッパーにすぎません。リファレンス属性はcsc.exeの/referenceオプションで、アセンブリが必要です。msbuildファイルへのProjectReferenceは何も意味しません。それらのプロジェクトを最初に構築し、出力アセンブリをReference属性に渡す必要があります。基本的にVisual Studioによって作成された適切なプロジェクトファイルは自動的に作成されます(ProjectReferencesを最初にビルドします。期限が切れていれば、出力アセンブリが何であるかを把握してReferencesに追加します)。それを出発点として使用してください。

関連する問題