首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有"dotnet“或”dotfuscator“的dotfuscator- "FindProjectAssemblies”任务无法加载PreEmptive.Dotfuscator.Internal.Tasks.dll

带有"dotnet“或”dotfuscator“的dotfuscator- "FindProjectAssemblies”任务无法加载PreEmptive.Dotfuscator.Internal.Tasks.dll
EN

Stack Overflow用户
提问于 2019-01-17 19:29:26
回答 1查看 1.9K关注 0票数 3

当构建试图使用dotfuscator的.net核心应用程序时,我们可以使用msbuild.exe成功构建和混淆,但是使用.net核心cli进行的任何构建或发布都会失败。

使用本地命令行以及在我们的devops构建管道中都存在这些问题。

示例

msbuild.exe "the project file.csproj“<- -此操作并使用dotfuscator

dotnet构建“项目file.csproj”<- -这会引发下面的错误。

dotnet发布"the project file.csproj“<-还引发下面的错误。

D:\Repos\PF\tools\dotfuscator\PreEmptive.Dotfuscator.Common.targets(262,5):error MSB4062:无法从程序集D:\Repos\PF\tools\dotfuscator\PreEmptive.Dotfuscator.Internal.Tasks.dll.加载"FindProjectAssemblies“任务无法加载文件或程序集“Microsoft.Build.Uicities.v4.0,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f7f11d50a3a”。系统找不到指定的文件。确认声明是正确的,程序集及其所有依赖项都可用,任务包含实现Microsoft.Build.Framework.ITask的公共类。D:\Repos\PF\source\xxxxx.xxxxx.xxxxx.API\xxxxx.xxxxxx.xxxxxx.API.csproj

看上去很像这个问题。https://github.com/Microsoft/msbuild/issues/2111

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-23 21:18:30

更新(2019-12-20):我们发布了6.0.0的测试版,支持在非Windows操作系统上运行6.0.0的测试版。这包括对dotnet命令的支持。

Dotfuscator可以保护.NET核心程序集,然后这些程序集可以在.NET核心(即跨平台)下运行。然而,在本文撰写之时,Dotfuscator本身只运行在经典的、基于Windows的.NET框架上。

看起来您已经在推荐的方法中将Dotfuscator集成到您的构建中了,它使用了Dotfuscator的MSBuild目标和任务。说明包括将此<Import>添加到项目文件中:

代码语言:javascript
复制
<Import Project="$(MSBuildExtensionsPath)\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Common.targets"/>

当我为一个.NET核心项目这样做时,我可以在Visual或通过msbuild /t:Publish /p:Configuration=Release构建并获得一个受保护的应用程序。但是如果我试图运行dotnet build MyApp.csprojdotnet publish MyApp.csproj,构建就失败了。一开始我收到的错误信息和你不一样:

error MSB4019:未找到导入的项目"C:\Program“。确认声明中的路径是正确的,并且文件存在于磁盘上。

这是因为Dotfuscator没有将其MSBuild目标安装到.NET核心位置,只有.NET框架和Visual位置,因此上面的<Import>找不到所需的文件。

如果我将MSBuild文件从C:\Program Files (x86)\MSBuild复制到自己的位置(如C:\DotfuscatorMSBuildCopy ),并相应地更改<Import>

代码语言:javascript
复制
<Import Project="C:\DotfuscatorMSBuildCopy\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Common.targets"/>

然后我看到你的错误:

错误MSB4062:无法从程序集MSB4062加载"FindProjectAssemblies“任务无法加载文件或程序集“Microsoft.Build.Uicities.v4.0,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f7f11d50a3a”。系统找不到指定的文件。确认声明是正确的,程序集及其所有依赖项都可用,任务包含实现Microsoft.Build.Framework.ITask的公共类。

解决方案是使用msbuild /t:Publish /p:Configuration=Release而不是dotnet进行构建。

(注:我为Dotfuscator团队工作,并以该身份回答。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54243003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档