1

我在较旧的解决方案中完成了一项工作。我已向此解决方案添加了一个新项目。对于这个解决方案,我们必须使用Visual Studio 2008并且没有项目可以拥有比 2.0 更新的 .Net 框架(因为它安装的服务器有限制)。

即使解决方案构建在我的机器上,我们仍然必须手动编辑项目 ( .csproj) 文件以专门设置一个属性:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

(这是我添加项目时自动生成的)需要更改为

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

以促进一些在这里工作的人都无法理解或想接触的神秘的构建设置。

这个问题/文章中,我发现了以下内容:

$(MSBuildToolsPath) 是 $(MSBuildBinPath) 的特定版本替换。较旧的属性仍然可用,但应弃用。VS2008 在创建项目时会使用较新的路径。在 VS2005 之前,使用的是旧路径。当您将项目从 VS2005 升级到 VS2008 时,它不会修改路径。

这是否意味着在这个构建脚本的某个地方,MSBuildBinPath 的路径是硬编码的?

手动更改它容易出错且容易忘记(it-builds-on-my-machine效果)。有没有办法在 VS2008 中的某个地方设置它,以便该解决方案的新项目默认在.csproj文件中获取旧属性?

4

1 回答 1

1

您是否尝试在构建服务器上安装 .net 3.5 和 VS2008?可能是,您的构建服务器上只有 .net 2.0 和 msbuild 2.0 可用。

我只看到 1 个选项来完成您所描述的内容:使用自定义项目模板。我相信它很容易完成(假设有一个教程,你只需要对默认模板稍作修改)。

于 2013-10-27T19:22:15.897 回答