gpt4 book ai didi

msbuild - 在代码存储库中包含 Nemerle 编译器

转载 作者:行者123 更新时间:2023-12-01 11:49:13 25 4
gpt4 key购买 nike

我正在尝试将 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 在项目文件夹而不是解决方案文件夹下寻找.build目录?有解决办法吗?

如果我把它改成:

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

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

最佳答案

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

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

关于msbuild - 在代码存储库中包含 Nemerle 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13157013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com