6

我想将脚本转换为项目。在脚本中,我使用#I 设置了引用的.dll 的路径。有没有办法直接在 .fsproj 文件中指定这个路径?

谢谢

4

2 回答 2

7

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>
于 2012-05-23T12:59:35.237 回答
5

Project Properties您可以在-> Reference Paths->中设置参考文件夹Add Folder

如果您想以编程方式执行此操作,请在下设置参考路径<Project><PropertyGroup><ReferencePath>...并在<Project><ItemGroup><Reference><HintPath>.... 这是一个反向执行的脚本(从 fsproj 到 fsx 文件),但它可以为您提供一些继续操作的提示。

于 2012-05-23T13:16:35.460 回答