- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当构建尝试使用 dotfuscator 的 .net core 应用程序时,我们可以使用 msbuild.exe 成功构建和混淆,但是使用 .net core cli 的任何构建或发布都会失败。
使用本地命令行以及我们的 DevOps 构建管道时都存在这些问题。
示例
msbuild.exe“项目文件.csproj”<-这可以工作并使用 dotfuscator
dotnet build“项目文件.csproj”<-这会引发以下错误。
dotnetpublish“项目文件.csproj”<-也会引发以下错误。
D:\Repos\PF\tools\dotfuscator\PreEmptive.Dotfuscator.Common.targets(262,5):错误 MSB4062:无法从程序集 D:\Repos\PF\tools 加载“FindProjectAssemblies”任务\dotfuscator\PreEmptive.Dotfuscator.Internal.Tasks.dll。无法加载文件或程序集“Microsoft.Build.Utilities.v4.0,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项均可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共(public)类。 [D:\Repos\PF\source\xxxxx.xxxxx.xxxxx.API\xxxxx.xxxxxx.xxxxxx.API.csproj]
最佳答案
更新(2019-12-20):我们发布了 a beta version of Dotfuscator Professional 6.0.0支持在非 Windows 操作系统上运行 Dotfuscator。这包括对 dotnet
的支持命令。
Dotfuscator 可以保护 .NET Core 程序集,然后可以在 .NET Core 下运行(即跨平台)。然而,截至撰写本文时,Dotfuscator 本身仅运行在基于 Windows 的经典 .NET Framework 上。
看来您已将 Dotfuscator Professional 集成到 the recommended way 中的构建中,它使用 Dotfuscator 的 MSBuild 目标和任务。说明包括添加此 <Import>
到您的项目文件:
<Import Project="$(MSBuildExtensionsPath)\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Common.targets"/>
当我为 .NET Core 项目执行此操作时,我可以在 Visual Studio 中或通过 msbuild /t:Publish /p:Configuration=Release
进行构建并获得 protected 应用程序。但如果我尝试运行 dotnet build MyApp.csproj
或dotnet publish MyApp.csproj
,构建失败。我一开始收到的错误消息与您不同:
error MSB4019: The imported project "C:\Program Files\dotnet\sdk\2.1.503\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Common.targets" was not found. Confirm that the path in the declaration is correct, and that the file exists on disk.
这是因为 Dotfuscator 不会将其 MSBuild 目标安装到 .NET Core 位置,而仅安装到 .NET Framework 和 Visual Studio 位置,因此 <Import>
上面没有找到需要的文件。
如果我改为从 C:\Program Files (x86)\MSBuild
复制 MSBuild 文件到我自己的位置,例如 C:\DotfuscatorMSBuildCopy
,然后更改 <Import>
因此:
<Import Project="C:\DotfuscatorMSBuildCopy\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Common.targets"/>
然后我看到你的错误:
error MSB4062: The "FindProjectAssemblies" task could not be loaded from the assembly C:\DotfuscatorMSBuildCopy\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Internal.Tasks.dll. Could not load file or assembly 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.
解决方案是使用 msbuild /t:Publish /p:Configuration=Release
进行构建而不是dotnet
.
(注:我在 Dotfuscator 团队工作,并以此身份回答问题。)
关于.net-core - dotfuscator 为 "dotnet build"或 "dotnet publish"- 无法加载 "FindProjectAssemblies"任务 PreEmptive.Dotfuscator.Internal.Tasks.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54243003/
我读到 Linux 内核是抢占式的,这与大多数 Unix 内核不同。那么,抢占式内核的真正含义是什么? 一些类比或例子会比纯理论解释更好。 添加 1 -- 2018 年 12 月 7 日上午 11:0
我读到 Linux 内核是抢占式的,这与大多数 Unix 内核不同。那么,抢占式内核的真正含义是什么? 一些类比或例子会比纯理论解释更好。 添加 1 -- 2018 年 12 月 7 日上午 11:0
我问过 this question在关于杀死一个使用过多内存的进程之前,我已经找到了大部分解决方案。 但是,有一个问题:我尝试使用的方法似乎并未触及计算大量数字。下面的代码旨在对进程设置 10 秒的
当构建尝试使用 dotfuscator 的 .net core 应用程序时,我们可以使用 msbuild.exe 成功构建和混淆,但是使用 .net core cli 的任何构建或发布都会失败。 使用
我是一名优秀的程序员,十分优秀!