![](/img/trans.png)
[英]How to configure a website to use .net 4 on IIS 6 with the MSBuild extension pack?
[英]Is it possible to use MSBuild Extension Pack without installation?
有没有办法使用MSBuild扩展包与“本地”引用,不需要您运行安装程序? 换句话说,您可以将目标存储在解决方案项目文件夹中,以便每个开发人员都不必安装它吗?
您必须在任务的导入语句之前声明属性ExtensionTasksPath 。 例如,看看:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ExtensionTasksPath Condition="'$(ExtensionTasksPath)' == ''">E:\Data\Development\My Code\Community\MSBuild\ExtensionPack\</ExtensionTasksPath>
</PropertyGroup>
<Import Project="$(ExtensionTasksPath)MSBuild.ExtensionPack.tasks"/>
<Target Name="Demo">
<MSBuild.ExtensionPack.FileSystem.File TaskAction="GetTempFileName">
<Output TaskParameter="Path" PropertyName="TempPath"/>
</MSBuild.ExtensionPack.FileSystem.File>
<Message Text="TempPath: $(TempPath)" />
</Target>
</Project>
MSBuild社区任务类似,但该属性名为MSBuildCommunityTasksLib 。 我认为对于SDC任务,它称为TasksPath 。
我无法使用相对路径(即不是c:\\ blah但是.. \\ blah)。
这是因为如果它是相对的,则无法重新使用ExtensionTasksPath变量,因为您的文件(.csproj)和MsBuild.ExtensionPack.tasks文件位于不同的位置,从而导致相对路径的值不同。
最后这就是它为我工作的东西(置于.csproj文件的顶部):
<PropertyGroup>
<ExtensionTasksPath Condition="'$(ExtensionTasksPath)' == ''">..\4.0\</ExtensionTasksPath>
</PropertyGroup>
<Import Project="..\references\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/>
您需要“.. \\ 4.0 \\”而不是“”(空白)的原因是因为MsBuild.ExtensionPack.tasks文件检测到空白并且在这种情况下会执行一些不同的操作。 我不想破解MsBuild.ExtensionPack.tasks文件以防我以后想要升级它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.