2012-05-23 17 views
6

Quiero convertir un script en un proyecto. En el script, configuré la ruta a los .dlls referenciados usando #I. ¿Hay alguna manera de especificar esta ruta directamente en el archivo .fsproj?¿Cuál es el #I equivalente para un archivo .fsproj?

Gracias

+0

¿Qué significa #I? – User

+0

#I significa IncludePath también referencias de búsqueda. –

Respuesta

7

fsproj El archivo es en realidad un script MS Build, por lo que puede utilizar estándar de MS Construir características para definir las variables (como su ruta de inclusión) y utilizarlos en el archivo del proyecto. Esto no es tan simple como usar la directiva #I en los archivos de script F #, pero debería darle características similares.

Por ejemplo, puede crear un archivo Includes.proj que define su ruta de inclusión de esta manera:

<?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> 

continuación, puede modificar el archivo fsproj hacer referencia al archivo anterior y utilizar $(IncludePath) en sus referencias. Lamentablemente, esto tiene que ser hecho en un editor de texto (es decir descargar el proyecto, modificarlo y vuelva a cargarlo):

<?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> 
5

Puede configurar las carpetas de referencia en Project Properties ->Reference Paths ->Add Folder.

Si desea hacer esto mediante programación, establezca Rutas de referencia en <Project><PropertyGroup><ReferencePath>... y establezca rutas de acceso relativas de dlls en <Project><ItemGroup><Reference><HintPath>.... Aquí está a script haciendo al revés (desde fsproj a fsx), pero podría darle algunas pistas para continuar.

Cuestiones relacionadas