我在较旧的解决方案中完成了一项工作。我在这个解决方案中添加了一个新项目。对于这个解决方案,我们必须使用Visual Studio 2008
,并且没有项目可以拥有比2.0更新的.Net框架(因为它安装的服务器有限制)。
即使解决方案在我的机器上构建,我们仍然需要手动编辑项目(.csproj
)文件以专门设置一个属性:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
(我在添加项目时自动生成)需要更改为
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
促进一些神秘的构建设置,没有在这里工作的人理解或想要触摸。
在this question/article我发现了以下内容:
$(MSBuildToolsPath)是$(MSBuildBinPath)的特定于版本的替代品。较旧的属性仍然可用,但应弃用。 VS2008将在创建项目时使用较新的路径。在VS2005之前,使用了较旧的路径。将项目从VS2005升级到VS2008时,它不会修改路径。
这是否意味着在此构建脚本的某处,MSBuildBinPath的路径是硬编码的?
手动更改此操作容易出错并且容易忘记( it-build-on-my-machine 效果)。有没有办法在VS2008中的某个地方设置它,以便此解决方案的新项目默认在.csproj
文件中获取旧属性?
答案 0 :(得分:1)
您是否尝试在构建服务器上安装.net 3.5和VS2008?可能,你的构建服务器上只有.net 2.0和msbuild 2.0。
我只看到一个选项来完成您描述的内容:使用自定义项目模板。我相信它很容易实现(假设有一个tutorial,你只需要稍微修改一下默认模板)。