在Xamarin.Android项目上引发Dotfuscator错误
如前所述,我按照步骤将Dotfuscator集成到我的Xamarin.Android项目中,但到了构建项目的时候,我遇到了以下错误: “_DotfuscatorXamarin_determinatedFaultInputsTask”任务意外失败。 2> \path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):错误MSB4018:System.NullReferenceException:对象引用未设置为对象的实例。 2> \path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):错误MSB4018:在内联代码处。\u Dotfuscator Xamarin\u在\path\to\AppData\Local\Temp\eruovv3u.0.cs:第106行中确定了faultinputstask.Execute() 2> \path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):错误MSB4018:位于Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ItaskeExecutionHost.Execute() 2> \path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):错误MSB4018:位于Microsoft.Build.BackEnd.TaskBuilder.d_u26.MoveNext()在Xamarin.Android项目上引发Dotfuscator错误,xamarin.android,dotfuscator,Xamarin.android,Dotfuscator,如前所述,我按照步骤将Dotfuscator集成到我的Xamarin.Android项目中,但到了构建项目的时候,我遇到了以下错误: “_DotfuscatorXamarin_determinatedFaultInputsTask”任务意外失败。 2> \path\to\PreEmptive.Dotfuscator.Xamarin.targets(570,5):错误MSB4018:System.NullReferenceException:对象引用未设置为对象的实例。 2> \path\to\P
我在网上看了又看,但似乎没有人有这个问题。我认为问题与在第一次构建时生成默认配置文件有关。有什么想法吗?更新:此问题已在更新版本的Dotfuscator中修复。请参阅免费和商业许可的详细说明。原始答案如下
充分披露:我是先发制人解决方案公司Dotfuscator的开发人员,我以这个角色回答这个问题 没错,问题是目标文件中的默认配置文件生成(
PreEmptive.Dotfuscator.Xamarin.targets
)-很抱歉。具体地说,生成集成正在尝试发现项目引用,但需要的是经典的MSBuild项目格式,而不是.NET标准使用的新的最小格式
您可以按以下方式解决此问题:
\u DotfuscatorXamarinConfigTemplateLines
属性,并将其值(在CDATA部分中)复制到名为DotfuscatorConfig.xml
的新文件中(或为项目文件中的DotfuscatorXamarinConfigFileName
属性提供的任何值)与项目文件位于同一目录中- 对于Community Edition,请从Visual Studio中打开“工具”菜单并选择“抢占式保护-Dotfuscator”
- 对于专业版,从“开始”菜单运行Dotfuscator Professional Edition
- 将
替换为步骤2中构建的配置的相应目录Release
- 您应该选择与解决方案中的项目相对应的程序集,而不是选择作为框架一部分的第三方程序集和程序集
- 在Community Edition中,转到“生成设置”屏幕并选择“项目属性”选项卡
- 在Professional Edition中,转到设置选项卡并选择设置>项目属性屏幕
- 属性名称
,值InDir
obj\Release\DotfuscatorXamarin\dfin
- 属性名称
,值OutDir
obj\Release\DotfuscatorXamarin\dfout
- 属性名称
,值ReportDir
DotfuscatorReports\Release
- 将
替换为步骤2中构建的配置的相应目录。请注意,Release
和OutDir
指向的目录在磁盘上还不存在ReportDir
${configdir}\${InDir}\AssemblyName.dll
,用AssemblyName.dll
替换程序集的实际名称和扩展名。对每个输入部件重复上述步骤我一直在Xamarin.Android项目中根据配置Dotfuscator社区版。我还遇到了以下构建错误(与@AxiomaticNexus非常相似):
错误“\u DotfuscatorXamarin\u DetermineDefaultInputsTask”任务意外失败。
System.NullReferenceException:对象引用未设置为对象的实例。
在c:\Users\user\AppData\Local\Temp\wqhfhbsk.0.cs中的InlineCode.\u DotfuscatorXamarin\u确定了faultInputStatsk.Execute()
位于Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ItaskeExecutionHost.Execute()
在Microsoft.Build.BackEnd.TaskBuilder.d_u26.MoveNext()eKey.Droid C:\VSProjects\dotFuscatorTest\PreEmptive.Dotfuscator.Xamarin.targets 570
我已经用@Joe Sewell的完全披露解决了这个问题。
我希望先发制人的解决方案将尽快实现固定版本 在某个时候,我丢失了项目根目录中的PreEmptive.Dotfuscator.Xamarin.targets文件。我已经执行了
Error The "_DotfuscatorXamarin_DetermineDefaultInputsTask" task failed unexpectedly.
System.NullReferenceException: Object reference not set to an instance of an object.
at InlineCode._DotfuscatorXamarin_DetermineDefaultInputsTask.Execute() in c:\Users\user\AppData\Local\Temp\wqhfhbsk.0.cs:line 106
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() eKey.Droid C:\VSProjects\dotFuscatorTest\PreEmptive.Dotfuscator.Xamarin.targets 570
Error The "_DotfuscatorXamarin_DetermineDefaultInputsTask" task failed unexpectedly.
System.NullReferenceException: Object reference not set to an instance of an object.
at InlineCode._DotfuscatorXamarin_DetermineD efaultInputsTask.Execute() in c:\Users\hieta\AppData\Local\Temp\k3a5f2bj.0.cs:line 106
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() WorkSafe.Droid
<DotfuscatorXamarinGenerateNewConfigFile>false</DotfuscatorXamarinGenerateNewConfigFile>