2013-04-24 26 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

解決它通過使用常規任務,而不是使用內聯任務。