元素<Target>中的属性“Name”无法识别。

6

根据这里的指示,我遇到了以下错误:

元素中的"Name"属性未被识别

在.csproj文件中,我已经删除了PostBuild部分,并将其替换为:

<Target Name="SignOutput" AfterTargets="CoreCompile">
<Exec Command="&quot;C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe&quot; sign /f &quot;$(ProjectDir)My_Cert.pfx&quot; /p mypassword &quot;$(ProjectDir)obj\$(ConfigurationName)\MyExe.exe&quot;" />
</Target>

我这样做是因为在尝试运行新发布的SmartClient应用程序时,我遇到了“文件与清单中指定的计算哈希值不同”的错误。这是什么问题?


1
无法复现,您展示的目标是正确的,因此错误的原因在其他地方。 - stijn
你正在使用VS 2015吗?Windows 10? - Al Lelopath
3
不是A也不是B,但这并不重要。再读一遍你的问题,当你说“替换了postbuild”时,我想我找到问题所在了:你是否把你展示的目标放在了PropertyGroup里?这不是它的工作方式:它应该在项目级别定义。 - stijn
啊,那就是问题所在。我把答案(链接的问题中)理解为用“Target”替换“Postbuild”。将“Target”移到项目级别上可以解决问题。请将其作为答案发布,我会勾选它。 - Al Lelopath
1个回答

8
csproj文件中默认的PostBuildEvent是在一个PropertyGroup中定义为一个属性,看起来您将Target的代码粘贴到了该PropertyGroup中。这不仅没有实现预期的效果,而且还导致加载项目文件时出现错误,因为属性没有Name属性,所以您的xml格式有误。 解决方法:只需将Target放置在项目级别下,它将在构建时自动被调用,CoreCompile之后但链接等之前,因此这也是定义“后生成事件”的一种方式,从而造成了混淆。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接