0

以下は私の MSBuild XML です。BeforeBuild で生成されたファイルは DLL に含まれません。ファイルが含まれることを期待していました。CoreBuild が BeforeBuild で呼び出されたことに気付きました。生成されたファイルを含めて再構築するにはどうすればよいですか。

ありがとう

クリス

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    ...
    <FileAlignment>512</FileAlignment>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    ...
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    ...
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include=".\Resources\Assembly\*.dll" Condition="Exists('.\Resources\Assembly')" />
    ...
    <Reference Include="System.Xml.Linq" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include=".\**\*.cs" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <UsingTask TaskName="EdmTasks.ViewRefreshTask" AssemblyFile=".\Resources\Assembly\EdmTasks.dll" />
  <Target Name="BeforeBuild">
    <MsBuild Projects="ForwardPAS.csproj" Targets="CoreBuild" />
    <ViewRefreshTask Assembly="$(TargetPath)" Lang="cs" DbContext="FranklinIndexedAnnuityDb" />
  </Target>
</Project>
4

2 に答える 2

0
<Target Name="BeforeBuild">
    <MsBuild Projects="MyProject.csproj" Targets="CoreBuild" />
    <ViewRefreshTask Assembly="$(TargetPath)" Lang="cs" DbContext="MyDatabaseContext" />
    <MsBuild Projects="MyProject.csproj" Targets="CoreBuild" Properties="Rerun=true" />
</Target>
  1. ビルド中に実行される手順は次のとおりです。BeforeBuildb。ビルド(CoreBuildを含む)c。AfterBuild
  2. MyDatabase.Views.csをMyProject.DLLにビルドする必要があるため、ビルド(b)に到達する前に生成する必要があります。したがって、BeforeBuild(a)に配置します。
  3. ただし、ViewRefreskTask(このファイルを生成する)には入力としてMyProject.DLLが必要です。したがって、ViewRefreskTaskの前に「CoreBuild」(MyProject.dllをビルドするため)を呼び出します。
  4. 私は当初、BeforeBuildが終了すると、プロジェクトのビルドと再構築に進むと想定していました(新しいファイルがあるため、Compile ItemGroupです)…しかし、そうではありませんでした…「Target"CoreBuild"skiped」というメッセージが表示されました。以前は正常にビルドされました。」</li>
  5. そこで、新しいタスクを追加しました…これでも「ターゲット「CoreBuild」はスキップされました。以前は正常にビルドされました。」</li>
  6. 最後に、 http: //social.msdn.microsoft.com/forums/en-US/msbuild/thread/8db6b9e4-16dd-48b2-b243-c6e4c9670982/のおかげで、Properties = "Rerun=true"を追加して機能しました。

再構築が行われ、プロジェクトDLLに生成されたビューが含まれていました。

于 2013-02-05T01:36:40.147 に答える
0

csharp targets 行の直後

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

これを追加

<PropertyGroup>
  <UseHostCompilerIfAvailable>False</UseHostCompilerIfAvailable>
</PropertyGroup>

VS は、ビルド プロセスの開始時にキャッシュされたバージョンを使用するのではなく、ソースを再度取得してコンパイルします。

于 2013-08-20T10:00:57.410 に答える