我在.csproj文件中定义了以下内联任务,该文件应运行BeforeBuild。
<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构建项目时,我收到以下错误:
无法找到引用&#34; System.Xml.dll&#34;。如果您的代码需要此引用,则可能会出现编译错误。
无法找到参考&#34; System.Xml.Linq.dll&#34;。如果您的代码需要此引用,则可能会出现编译错误。
如果我删除XML内容和两个引用,则构建成功。 我试图使用DLL的完整路径(%windir%/ assembly)而没有任何成功。
这里的任何想法都是错误的。
答案 0 :(得分:10)
引用System.Xml.Linq时,我遇到了同样的问题。切换到已编译的任务确实解决了您的解决方案,但是要将原始代码实现为内联任务,只需从引用中删除文件扩展名,然后删除内联任务,以便引用根命名空间而不是文件名。
改变这个:
<Reference Include="System.Xml.dll" />
<Reference Include="System.Xml.Linq.dll"/>
阅读:
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq"/>
答案 1 :(得分:-1)
通过使用常规任务而不是使用内联任务来解决它。