windows 错误MSB4175:无法从程序集加载任务工厂“CodeTaskFactory”

xjreopfe  于 2023-05-30  发布在  Windows
关注(0)|答案(2)|浏览(379)

我的.csproj文件中有一个目标,它看起来像这样:

<UsingTask TaskName="GetPackageVersion" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
<ParameterGroup>
  <FileName ParameterType="System.String" Required="true" />
  <PackageVersion ParameterType="System.String" Output="true" />
</ParameterGroup>
<Task>
  <Reference Include="System.Xml" />
  <Reference Include="System.Xml.Linq" />
  <Using Namespace="System.IO" />
  <Using Namespace="System.Xml.Linq" />
  <Code Type="Fragment" Language="cs"><![CDATA[
  var doc = XDocument.Load(FileName);
  var defaultNamespace = doc.Root.GetDefaultNamespace();
  PackageVersion = doc.Root.Element(defaultNamespace.GetName("Identity")).Attribute("Version").Value;
]]>
</Code>
</Task>
</UsingTask>
<Target Name="GetZip">
<GetPackageVersion Filename="Package.appxmanifest">
  <Output PropertyName="PackageVersion" TaskParameter="PackageVersion" />
</GetPackageVersion>
<ItemGroup>
  <BinDirectoryFiles Include="$(MSBuildProjectDirectory)\AppPackages\MyApp_$(PackageVersion)_x86_MyApp_Test\**\*.*" />
</ItemGroup>
<Zip Files="@(BinDirectoryFiles)" WorkingDirectory="$(MSBuildProjectDirectory)\AppPackages\MyApp_$(PackageVersion)_x86_MyApp_Test" ZipFileName="$(MSBuildProjectDirectory)\Zip\MyApp_$(PackageVersion).zip" />
</Target>

我的项目在GitLab上,当我提交一些东西时会自动构建。该项目构建没有任何问题,然后它应该压缩应用程序包。一开始它工作,但在我的虚拟机上安装最新的Windows 10版本(1803)后,它在Zip目标上失败,并出现以下错误:
C:\Multi-Runner\buildings\9fca3796\0\移动的\mail-windows\MyApp\MyApp.csproj(657,5):错误MSB 4175:无法从程序集“C:\Program Files(x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\bin\Microsoft.Build.Tasks.Core.dll”加载任务工厂“CodeTaskFactory”。客户端不具有所需权限
我不知道为什么现在又提起来了。我什么都没改变。我不得不说,如果我从VM上的命令提示符调用目标,它就会工作。

yzuktlbb

yzuktlbb1#

在最新版本的Windows 10中,默认构建位置C:\gitlab-runner\builds受到保护。一种解决方案是通过向config.toml文件的runners部分添加一行builds_dir,将buildings目录移动到runner用户的主文件夹中。需要转义的反斜杠来正确解析.toml中的路径。

builds_dir = "c:\\\Users\\\gitlab-ci-users\\\builds"

我不得不重新启动我的gitlab服务,以使此更改生效。

syqv5f0l

syqv5f0l2#

我打了类似的东西,但不是在我的机器上(在另一个团队)。从CodeTaskFactory切换到RoslyCodeTaskFactory为我们修复了它(但它不会在MSBuild < 15.8时构建)
https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-roslyncodetaskfactory?view=vs-2019

相关问题