【问题标题】:Including the Nemerle compiler in code repository在代码库中包含 Nemerle 编译器
【发布时间】:2012-10-31 11:36:46
【问题描述】:

我正在尝试将 Nemerle 编译器包含到我的源代码存储库中,以便在构建服务器中不安装 Nemerle 的情况下构建它。目前我的源代码目录是这样的:

- [MySolutionFolder]
--- [.build]
------ [Nemerle]
--------- [net-4.0]
------------ ncc.exe
------------ ncc32.dll
------------ Nemerle.dll
------------ Nemerle.MSBuild.targets
------------ { all other Nemerle requirements }
--- [MyNemerleProjectFolder]
------ MyNemerleProject.nproj
------ { various .n files }
--- MySolution.sln
--- build.bat

build.bat 文件是一个简单的脚本,它在 .sln 文件上调用 MSBuild。

在我的 .nproj 文件中,我更改了行

<Nemerle Condition=" '$(Nemerle)' == '' ">$(NemerleBinPathRoot)\$(NemerleVersion)</Nemerle>

到:

<Nemerle Condition=" '$(Nemerle)' == '' ">$(SolutionDir).build\Nemerle\$(NemerleVersion)</Nemerle>

更改后,我可以从命令行脚本成功构建,但是我无法在 Visual Studio 中打开解决方案。打开解决方案时VS抱怨找不到MySolutionFolder\MyNemerleProjectFolder\.build\Nemerle\net-4.0\Nemerle.MSBuild.targets

为什么Visual Studio 在project 文件夹而不是solution 文件夹下寻找.build 目录?有解决办法吗?

如果我将其更改为:

<Nemerle Condition=" '$(Nemerle)' == '' >$(ProjectDir)..\.build\Nemerle\$(NemerleVersion)</Nemerle>

然后解决方案将在 Visual Studio 中打开,但构建失败 - 命令行构建也失败..

【问题讨论】:

    标签: msbuild nemerle


    【解决方案1】:

    尝试使用 $(MSBuildProjectDirectory) 而不是 $(ProjectDir)。 例如:

    <Nemerle Condition=" '$(Bootstrapping)' == 'true' ">$(MSBuildProjectDirectory)\..\Boot\$(NemerleVersion)</Nemerle>
    <Nemerle Condition=" '$(Bootstrapping)' == 'false' ">$(NemerleBinPathRoot)\$(NemerleVersion)</Nemerle>
    

    【讨论】:

    • 谢谢! $(Bootstrapping) 变量似乎无关紧要,我只是将其更改为 &lt;Nemerle Condition=" '$(Nemerle)' == '' "&gt;$(MSBuildProjectDirectory)\..\.build\Nemerle\$(NemerleVersion)&lt;/Nemerle&gt;,它现在从 Visual Studio 中的命令行和构建!非常感谢
    【解决方案2】:

    听起来像是 Visual Studio 中的一个错误。

    您可以做的是指定一个预构建事件,它将create a symbolic link 从$(ProjectDir).build 变为$(SolutionDir).build。

    Hackish,是的。

    【讨论】:

    • 和 +1 用于跳出框框思考 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    相关资源
    最近更新 更多