Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MSBuild.ExtensionPack的MSBuildProjectDirectory未解析_C#_Asp.net_Asp.net Web Api_Msbuild - Fatal编程技术网

C# MSBuild.ExtensionPack的MSBuildProjectDirectory未解析

C# MSBuild.ExtensionPack的MSBuildProjectDirectory未解析,c#,asp.net,asp.net-web-api,msbuild,C#,Asp.net,Asp.net Web Api,Msbuild,我正在从事一个ASP.NET4WebAPI项目,并包含一个wpp.targets文件。我需要使用MSBuild.ExtensionPack.Xml.XmlFile替换我的一个配置Xml文件中的值 问题是我不想在所有机器上安装MSBuild.ExtensionPack,所以我将其与项目打包在一起。在本地生成中,指向MSBuild.ExtensionPack.dll的路径解析正确。但是,在我的生成计算机上,我一直遇到以下错误:无法从程序集C:\Program Files(x86)\MSBuild\E

我正在从事一个ASP.NET4WebAPI项目,并包含一个wpp.targets文件。我需要使用MSBuild.ExtensionPack.Xml.XmlFile替换我的一个配置Xml文件中的值

问题是我不想在所有机器上安装MSBuild.ExtensionPack,所以我将其与项目打包在一起。在本地生成中,指向MSBuild.ExtensionPack.dll的路径解析正确。但是,在我的生成计算机上,我一直遇到以下错误:
无法从程序集C:\Program Files(x86)\MSBuild\ExtensionPack\4.0\MSBuild.ExtensionPack.dll加载“MSBuild.ExtensionPack.Xml.XmlFile”任务。

它似乎正在解析为包的默认安装位置

以下是我的wpp.targets文件中的内容:

<?xml version="1.0" encoding="utf-8"?>


$(MSBuildProjectDirectory)\..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.tasks
$(MSBuildProjectDirectory)\..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.tasks

当您有一个以上的帮助程序dll源位置选项时……我喜欢使用下面的样式

类似这样的东西(显然,你必须为“可能的定位单”和“可能的定位单”输入真实的位置)


..\PossibleLocationOne\MSBuild.ExtensionPack.dll
..\possibleLocationWO\MSBuild.ExtensionPack.dll
找不到\u MSBUILDEXENSIONPACK\MSBuild.ExtensionPack.dll的\u路径\u
为可能的位置添加所有选项…并为“我没有找到匹配项”添加一个额外选项

然后使用“UsingTask”

“UsingTask”是~~在~~ MyFoundMSBuildExtensionPackLocation(PropertyGroup)…..之后,$(MyFoundMSBuildExtensionPackLocation)在调用UsingTask之前解析

<!-- Sets the assembly which will run the transformation on Web.config (Should be installed on Dev machines) -->
<UsingTask TaskName="TransformXml"
           AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

<!-- Get the path to the MSBuild.Extension.Pack -->
<PropertyGroup>
    <TPath>$(MSBuildProjectDirectory)\..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.tasks</TPath>
    <TPath Condition="Exists('$(MSBuildProjectDirectory)\..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.tasks')">$(MSBuildProjectDirectory)\..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.tasks</TPath>
</PropertyGroup>

<!--Import the MSBuild.Extension.Pack package -->
<Import Project="$(TPath)"/>

<!-- Make sure web.config and transformation files exist -->
<Target Name="ConfigurationTransform" BeforeTargets="BeforeBuild" Condition="Exists('Web.config')" />
<Target Name="ConfigurationTransform" BeforeTargets="BeforeBuild" Condition="Exists('Web.$(Configuration).config')" />

<!-- Make sure web.config will be there even for package/publish -->
<Target Name="CopyWebConfig" BeforeTargets="Build;Rebuild">
    <Copy SourceFiles="Web.Base.config"
          DestinationFiles="Web.config"
          OverwriteReadOnlyFiles="true"
          SkipUnchangedFiles="false" />
</Target>

<!-- Run Web.Config transformation on a build as well (not just a publish) -->
<Target Name="CustomTransformWebConfigOnBuild" AfterTargets="CopyWebConfig" >
    <Message Text="Transforming: Web.$(Configuration).config" Importance="high" />
    <TransformXml Source="Web.Base.config"
                  Transform="Web.$(Configuration).config"
                  Destination="Web.config" />
</Target>

<!-- Update Web.Config's config attribute -->
<Target Name="UpdateConfigAttribute" AfterTargets="CustomTransformWebConfigOnBuild" Condition="$(Configuration) != 'Release'">
    <Message Text="Transforming: Web.config" Importance="high" />       
    <MSBuild.ExtensionPack.Xml.XmlFile TaskAction="UpdateAttribute"
                                       File="Web.config"
                                       XPath="/configuration/appSettings/add[@key='config_url']"
                                       Key="value"
                                       Value="www.randomurl.com"/>
</Target>
<PropertyGroup>
    <MyFoundMSBuildExtensionPackLocation Condition="Exists('..\PossibleLocationOne\MSBuild.ExtensionPack.dll')">..\PossibleLocationOne\MSBuild.ExtensionPack.dll</MyFoundMSBuildExtensionPackLocation>
    <MyFoundMSBuildExtensionPackLocation Condition="Exists('..\PossibleLocationTwo\MSBuild.ExtensionPack.dll')">..\PossibleLocationTwo\MSBuild.ExtensionPack.dll</MyFoundMSBuildExtensionPackLocation>
    <!--Now check to see if either of the two above resolved , if not , add something to the path so you can at least -->
    <MyFoundMSBuildExtensionPackLocation Condition="'$(MyFoundMSBuildExtensionPackLocation)'==''">DID_NOT_FIND_A_PATH_FOR_MSBUILDEXENSIONPACK\MSBuild.ExtensionPack.dll</MyFoundMSBuildExtensionPackLocation>
</PropertyGroup>

<UsingTask AssemblyFile="$(MyFoundMSBuildExtensionPackLocation)" TaskName="TransformXml"/>