我想将脚本转换为项目。在脚本中,我使用#I 设置了引用的.dll 的路径。有没有办法直接在 .fsproj 文件中指定这个路径?
谢谢
该fsproj
文件实际上是一个MS Build脚本,因此您可以使用标准的 MS Build 功能来定义变量(例如您的包含路径)并在项目文件中使用它们。这不像#I
在 F# 脚本文件中使用指令那么简单,但它应该为您提供类似的功能。
例如,您可以创建一个Includes.proj
定义包含路径的文件,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludePath>C:\MyIncludePath</IncludePath>
</PropertyGroup>
</Project>
然后您可以修改fsproj
文件以引用上述文件并$(IncludePath)
在您的引用中使用。遗憾的是,这必须在文本编辑器中完成(即卸载项目,修改它然后重新加载它):
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="Includes.proj" />
<!-- lots of other stuff -->
<ItemGroup>
<Reference Include="mscorlib" />
<Reference Include="System" />
<Reference Include="FSharp.Core" />
<Reference Include="MyAssembly">
<HintPath>$(IncludePath)\MyAssembly.dll</HintPath>
</Reference>
</ItemGroup>
<!-- lots of other stuff -->
</Project>
Project Properties
您可以在-> Reference Paths
->中设置参考文件夹Add Folder
。
如果您想以编程方式执行此操作,请在下设置参考路径<Project><PropertyGroup><ReferencePath>...
并在<Project><ItemGroup><Reference><HintPath>...
. 这是一个反向执行的脚本(从 fsproj 到 fsx 文件),但它可以为您提供一些继续操作的提示。