Xamarin Studio的构建目标?试图让Fody工作?

10

我正在尝试让Xamarin Studio使用PropertyChanged.Fody。 我已经通过NuGet安装了Fody,它将Fody.targets放在其NuGet包文件夹中。 但是当我构建项目时,输出从未显示运行目标。

如何告诉Xamarin Studio使用Fody构建目标?

谢谢!

3个回答

16

我曾经遇到过同样的问题,并成功地找出了解决方法——如果你从csproj文件中删除build\Microsoft.Bcl.Build.targets这一行,那么Fody就能正常运行。

因此,请尝试删除这行代码。

<Import Project="..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" />

我知道在Xamarin项目中不需要Microsoft.Bcl.Build,但我需要解释为什么在删除此导入指令后Fody仍然可以工作。这对我来说毫无意义。 - Timur Zanagar
谢谢,这节省了我好几个小时的时间! - asp_net
1
有人对为什么会有差异有什么想法吗? - James Mundy
1
对于仍然存在问题或需要BCL(例如使用Microsoft.Http*)的人,升级到Xamarin Studio 6.0并结合此解决方案是我们的解决方法。请注意,XS 6.0支持MSBuild工具v14;Fody再次出现在我们的应用程序中。 - bunkerdive

2
由于您在问题中标记了,我假设您遇到的问题是在iOS上。直到最近,Xamarin.Studio没有使用xbuild(或msbuild)来构建项目,因此跳过了其他目标。
Xamarin.iOS 7.9(或更现实地说是8.0)开始,默认设置没有改变,但您可以从项目首选项中启用它:

use MSBuild build engine

忽略“不支持”的警告,但如果您遇到任何问题,请知道它是不受支持的。
然后,假设nuget正确添加了一行。
  <Import Project="PATH_TO/Fody.targets" />

目标应该被执行。

我的解决方案包括一个用于共享组件的PCL项目,一个iOS项目和一个Android项目。需要进行编织的文件位于PCL项目中。该项目没有选择构建引擎的选项。虽然iOS应用程序具有该选项,但勾选它会导致构建错误,提示无法导入Xamarin.MonoTouch.CSharp.targets。鉴于这是一个共享库项目,您有什么建议吗? - Tyler Brinks
查看您的构建输出,检查任务是否已执行。 - Stephane Delcroix
我已经尝试过多次,使用不同的项目选项更改。但它似乎从未执行成功。我已经仔细检查了csproj文件中是否导入了构建目标,结构看起来是正确的。 - Tyler Brinks

2
Fody.targets文件中存在错误。只需替换即可。
Condition="Exists(@(IntermediateAssembly))"

使用

Condition="Exists('@(IntermediateAssembly)')"

并且它应该能再次工作。

.../projectfolder/packages/Fody2.x.x/build/netstandard1.4/Fody.targets中找到文件。


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