#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

159 lines
7.2 KiB

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="FSharp.Build.Tasks.Fsc" AssemblyFile="FSharp.Build.Tasks.dll" />
<UsingTask TaskName="FSharp.Build.Tasks.IsFscInstalled" AssemblyFile="FSharp.Build.Tasks.dll" />
<UsingTask TaskName="CreateCSharpManifestResourceName" AssemblyName="Microsoft.Build.Tasks, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<UsingTask TaskName="Copy" AssemblyName="Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<PropertyGroup>
<MSBuildAllProjects>$(MSBuildAllProjects);$(FSharpBuildTasksPath)\SharpDevelop.Build.Fsc.targets</MSBuildAllProjects>
<DefaultLanguageSourceExtension>.fs</DefaultLanguageSourceExtension>
<Language>F#</Language>
<CheckIfFscNotInstalled Condition=" '$(CheckIfFscNotInstalled)' == '' ">False</CheckIfFscNotInstalled>
<FscInstalled>True</FscInstalled>
</PropertyGroup>
<PropertyGroup>
<CreateManifestResourceNamesDependsOn>
</CreateManifestResourceNamesDependsOn>
</PropertyGroup>
<Target Name="CreateManifestResourceNames" Condition="'@(ResxWithNoCulture)@(ResxWithCulture)@(NonResxWithNoCulture)@(NonResxWithCulture)'!=''" DependsOnTargets="$(CreateManifestResourceNamesDependsOn)">
<!-- Create the target resource names for non-culture resx files. -->
<CreateCSharpManifestResourceName Condition="'@(ResxWithNoCulture)'!=''" ResourceFiles="@(ResxWithNoCulture)" RootNamespace="$(RootNamespace)">
<Output TaskParameter="ManifestResourceNames" ItemName="ManifestResourceWithNoCultureName" />
</CreateCSharpManifestResourceName>
<!-- Create the target resource names for culture resx files. -->
<CreateCSharpManifestResourceName Condition="'@(ResxWithCulture)'!=''" ResourceFiles="@(ResxWithCulture)" RootNamespace="$(RootNamespace)">
<Output TaskParameter="ManifestResourceNames" ItemName="ManifestResourceWithCultureName" />
</CreateCSharpManifestResourceName>
<!-- Create the target resource names for non-culture non-resx files. -->
<CreateCSharpManifestResourceName Condition="'@(NonResxWithNoCulture)'!=''" ResourceFiles="@(NonResxWithNoCulture)" RootNamespace="$(RootNamespace)">
<Output TaskParameter="ManifestResourceNames" ItemName="ManifestNonResxWithNoCulture" />
</CreateCSharpManifestResourceName>
<!-- Create the target resource names for culture non-resx files. -->
<CreateCSharpManifestResourceName Condition="'@(NonResxWithCulture)'!=''" ResourceFiles="@(NonResxWithCulture)" RootNamespace="$(RootNamespace)">
<Output TaskParameter="ManifestResourceNames" ItemName="ManifestNonResxWithCulture" />
</CreateCSharpManifestResourceName>
</Target>
<Target Name="CoreCompile" Inputs="$(MSBuildAllProjects);
@(Compile);
@(ReferencePath);
@(ManifestResourceWithNoCulture);
$(ApplicationIcon);
$(AssemblyOriginatorKeyFile);
@(ManifestNonResxWithNoCultureOnDisk);
@(ReferencePath);
@(CompiledLicenseFile)"
Outputs="@(DocFileItem);
@(IntermediateAssembly);
$(NonExistentFile)"
DependsOnTargets="$(CoreCompileDependsOn)">
<Fsc
Condition=" '$(FscInstalled)' == 'True' "
DebugType="$(DebugType)"
EmitDebugInformation="$(DebugSymbols)"
FileAlignment="$(FileAlignment)"
KeyContainer="$(KeyContainerName)"
KeyFile="$(KeyOriginatorFile)"
Optimize="$(Optimize)"
OutputAssembly="@(IntermediateAssembly)"
Resources="@(ManifestResourceWithNoCulture);@(ManifestNonResxWithNoCultureOnDisk);@(CompiledLicenseFile)"
Sources="@(Compile)"
References="@(ReferencePath)"
TargetType="$(OutputType)"
Standalone="$(Standalone)"
NoMLLib="$(NoMLLib)" />
</Target>
<Import Project="$(MSBuildBinPath)\Microsoft.Common.targets" />
<!--
Check if F# is installed.
-->
<Target Name="BeforeBuild">
<CallTarget Targets="IfFscInstalled" />
</Target>
<Target Name="BeforeClean">
<CallTarget Targets="IfFscInstalled" />
</Target>
<Target Name="BeforeRebuild">
<CallTarget Targets="IfFscInstalled" />
</Target>
<Target Name="IfFscInstalled">
<Message Text="Checking if F# is installed." Condition=" '$(CheckIfFscNotInstalled)' == 'True' "/>
<!-- Check if F# is installed -->
<IsFscInstalled Condition=" '$(CheckIfFscNotInstalled)' == 'True' ">
<Output TaskParameter="IsInstalled" PropertyName="FscInstalled"/>
</IsFscInstalled>
<Warning Code="FSC1001" Text="Unable to find the F# compiler (fsi.exe). The F# addin will not be compiled." Condition=" '$(FscInstalled)' == 'False' and '$(CheckIfFscNotInstalled)' == 'True' " />
</Target>
<!-- Override CopyFilesToOutputDirectory so if the F# compiler is not installed there are
no errors when trying to copy non-existent files. -->
<Target
Name="CopyFilesToOutputDirectory"
DependsOnTargets="
ComputeIntermediateSatelliteAssemblies;
_CopyFilesMarkedCopyLocal;
_CopySourceItemsToOutputDirectory;
_CopyAppConfigFile;
_CopyManifestFiles;
_CheckForCompileOutputs;
_SGenCheckForOutputs">
<!-- Copy the build product (.dll or .exe). -->
<Copy Condition=" '$(FscInstalled)' == 'True' "
SourceFiles="@(IntermediateAssembly)"
DestinationFolder="$(OutDir)"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)">
<Output TaskParameter="DestinationFiles" ItemName="MainAssembly"/>
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
</Copy>
<Message Importance="High" Text="$(MSBuildProjectName) -&gt; @(MainAssembly->'%(FullPath)')" />
<!-- Copy the debug information file (.pdb), if any -->
<Copy
SourceFiles="@(_DebugSymbolsIntermediatePath)"
DestinationFiles="@(_DebugSymbolsOutputPath)"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
Condition="'$(FscInstalled)' == 'True' and '$(_DebugSymbolsProduced)'=='true' and '$(SkipCopyingSymbolsToOutputDirectory)' != 'true'">
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
</Copy>
<!-- Copy the resulting XML documentation file, if any. -->
<Copy
SourceFiles="@(DocFileItem)"
DestinationFiles="@(FinalDocFile)"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
Condition="'$(FscInstalled)' == 'True' and '$(_DocumentationFileProduced)'=='true'">
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
</Copy>
<!-- Copy satellite assemblies. -->
<Copy Condition=" '$(FscInstalled)' == 'True' "
SourceFiles="@(IntermediateSatelliteAssembliesWithTargetPath)"
DestinationFiles="@(IntermediateSatelliteAssembliesWithTargetPath->'$(OutDir)%(Culture)\$(TargetName).resources.dll')"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)">
<Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
</Copy>
</Target>
</Project>