2013-04-24 41 views
4

我在.csproj文件中定义了以下内联任务,它应该运行BeforeBuild。任务中引用DLL的MSBuild

<UsingTask TaskName="VersioningTask" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll"> 
<ParameterGroup> 
    <FileName ParameterType="System.String" Required="true" /> 
    <XmlFileName ParameterType="System.String" Required="true" /> 
</ParameterGroup> 
<Task> 
    <Reference Include="System.Xml.dll" /> 
    <Reference Include="System.Xml.Linq.dll"/> 
    <Using Namespace="System" /> 
    <Using Namespace="System.IO" /> 
    <Using Namespace="System.Linq" /> 
    <Using Namespace="System.Text" /> 
    <Using Namespace="System.Text.RegularExpressions" /> 
    <Using Namespace="System.Xml.Linq" /> 
    <Code Type="Fragment" Language="cs"><![CDATA[ 
     var xDoc = XDocument.Load(XmlFileName); 
     //... 

当从VS2012建设项目我得到以下错误:

Could not find reference "System.Xml.dll". If this reference is required by your code, you may get compilation errors.

Could not find reference "System.Xml.Linq.dll". If this reference is required by your code, you may get compilation errors.

如果我删除XML的东西,两个引用,构建成功。 我试图使用DLL的(%windir%/大会)完整路径没有任何成功。

任何想法这里错了什么是高度赞赏。

回答

10

我在引用System.Xml.Linq时遇到了同样的问题。切换到已编译的任务确实解决了您的解决方案,但要将原始代码作为内嵌任务实现,只需从引用和内联任务中删除文件扩展名,以便引用根名称空间而不是文件名。

更改此:

<Reference Include="System.Xml.dll" /> 
<Reference Include="System.Xml.Linq.dll"/> 

阅读:

<Reference Include="System.Xml" /> 
<Reference Include="System.Xml.Linq"/> 
+3

感谢,内联任务的MSDN页面(http://msdn.microsoft.com/en-us/library/dd722601。 aspx)在最后错误地包含.dll。 – makhdumi 2014-04-30 23:50:35

-1

解决它通过使用常规任务,而不是使用内联任务。