使用Jenkins进行构建时,Xamarin.Forms项目中缺少netstandard 2.0参考

问题描述 投票:0回答:1

[当我尝试使用Xamarin.Forms建立更新的Jenkins项目时,我遇到了类似的1500多个错误:

App.xaml.cs(24,32):错误CS0012:常规参考定义中的Der Typ“ Object” ist。 FügenSie einen Verweis auf die Assembly“ netstandard,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51” hinzu。

翻译错误:

CS0012:类型'System.Object'是在未引用的程序集中定义的。您必须添加对程序集'netstandard,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'的引用。

如果我使用同一台机器构建项目,但在Visual Studio 2017内,则可以正常工作(就像在我的本地机器上一样)。 Jenkins的构建命令看起来像这样

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild" /p:ReferencePath=C:\jenkins\workspace\somelibrary\ SomeProject/SomeProject/SomeProject.csproj /t:Restore /p:Configuration=Release /t:Build 

以前是我updated to .NET Standard 2.0.NET Standard 2.0。构建服务器本身在Xamarin.Forms 3.4.0.1039999 Windows 10 1703上运行。 我在Windows 10 1909项目中有UWP,但是我没有真正使用它。(我Xamarin.Forms如果要与read一起使用Windows 10 1709,则至少需要.NET Standard 2.0 ]。)

该项目还引用了UWP程序包,该程序包与NuGet尚不兼容。我在这里得到警告

警告NU1701软件包'xxx'是使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETStandard,Version = v2.0'恢复的。该软件包可能与您的项目不完全兼容。

这可能是有些问题的原因,因为它是.NET Standard 2.0

我尝试过的事情:

  • 清理构建,删除not fully compatiblebin文件夹
  • obj的使用未成功与Jenkins建立关系。对<Reference Include="netstandard" />的引用在我的本地构建环境中引发了警告(但已安装)
  • NETStandard.LibraryVisual Studio Build Tools 2017更新为最新版本(15.9.18)
  • 在构建服务器上安装了Visual Studio 2017.NET Core SDK.NET Core Build Tools
  • 使用C:\ Program Files \ dotnet]扩展.NET Framework 4.7.2 SDK环境变量,将全局环境变量PATH设置为C:\ Program Files \ dotnet \ sdk \ 2.1.509 \ Sdks
  • 已删除的UWP项目(仍然存在于文件夹中,但在* .sln中不存在)
  • 在研究了其他用户的类似问题后进行了一些研究,但没有找到解决问题的方法
  • 我观察到的内容:

  • 使用MSBuildSDKsPath在构建服务器上使用Visual Studio 2017构建项目可以正常工作>>
  • 使用Windows 10 1703在本地计算机上使用Visual Studio 2017构建项目可以正常工作
  • Windows 10 1809和构建服务器上的命令行上构建项目可以正常工作(NuGet软件包正确引用了netstandard2.0而不是netstandard1.3等等,在NuGetFallbackFolder中依此类推)
  • 我可以尝试的方法:

    • 将构建服务器更新为msbuild或更高版本
  • 替换/更新仍在使用Windows 10 1709的库
  • 升级到.NET 4.6.1
  • 从头开始创建Visual Studio 2019项目并复制所有文件(并丢失.NET Standard历史记录]
  • 但是我没有得到的是它在GIT中工作正常,但在Visual Studio / msbuild中却不能正常工作。似乎缺少参考或未安装某些内容。

    我该怎么办?

编辑:

从项目的Xamarin.Forms部分提取。csproj

Jenkins

[当我尝试使用Jenkins构建更新的Xamarin.Forms项目时,我遇到了1500多个错误:App.xaml.cs(24,32):错误CS0012:einer nicht referenzierten中的Der Typ“ Object” ist ...

.net visual-studio jenkins xamarin.forms .net-standard-2.0
1个回答
0
投票

我想我用这个解决了

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <NeutralLanguage>en</NeutralLanguage>
    <AssemblySearchPaths>
        $(AssemblySearchPaths);
        $(ReferencePath);
    </AssemblySearchPaths>
  </PropertyGroup>
  <ItemGroup>
    <None Remove="picture.png" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Plugin" Version="5.2.0" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="SomeLibrary">
      <HintPath>pat\to\library\netstandard2.0\SomeLibrary.dll</HintPath>
    </Reference>
  </ItemGroup>

    <ItemGroup>
        <Compile Update="Common\Localization\AppResources.Designer.cs">
            <AutoGen>True</AutoGen>
            <DesignTime>True</DesignTime>
            <DependentUpon>AppResources.resx</DependentUpon>
        </Compile>
    </ItemGroup>
    <ItemGroup>
        <EmbeddedResource Update="Common\Localization\AppResources.de.resx">
            <SubType>Designer</SubType>
        </EmbeddedResource>
        <EmbeddedResource Update="Common\Localization\AppResources.resx">
            <Generator>PublicResXFileCodeGenerator</Generator>
            <LastGenOutput>AppResources.Designer.cs</LastGenOutput>
            <SubType>Designer</SubType>
        </EmbeddedResource>
    </ItemGroup>
    <ItemGroup>
      <None Update="App.xaml">
        <Generator>MSBuild:Compile</Generator>
      </None>
      <None Update="SomePage.xaml">
        <Generator>MSBuild:Compile</Generator>
      </None>
    </ItemGroup>

</Project>
© www.soinside.com 2019 - 2024. All rights reserved.