我刚刚在源代码控制中添加了一个UWP应用程序.但是,我的CI服务器(Jenkins)似乎不喜欢这样:
错误MSB4019:找不到导入的项目"C:\ Program Files(x86)\ MSBuild\Microsoft\WindowsXaml\v14.0\Microsoft.Windows.UI.Xaml.CSharp.targets".确认声明中的路径是否正确,以及该文件是否存在于磁盘上.
这源于以下UWP项目文件导入:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)
在我的本地计算机上,我可以看到此文件位于:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\WindowsXaml\v15.0\Microsoft.Windows.UI.Xaml.CSharp.Targets
Run Code Online (Sandbox Code Playgroud)
显然,这是由于我本地安装的Visual Studio 2017.但是,CI服务器没有安装Visual Studio.我想这就是MSBuildExtensionsPath解决错误中提到的路径的原因.
CI服务器上已安装以下项目:
我假设这些将包括必要的依赖项,但我找不到Microsoft.Windows.UI.Xaml.CSharp.targets任何地方.
复制本地计算机上的目录
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\WindowsXaml\v15.0
Run Code Online (Sandbox Code Playgroud)
到CI服务器
C:\Program Files (x86)\MSBuild\Microsoft\WindowsXaml\v14.0
Run Code Online (Sandbox Code Playgroud)
似乎解决了错误,但感觉非常hacky.
有没有办法解决这个问题,而无需在CI服务器上安装Visual Studio 2017或手动复制/重命名文件?
对于最新版本的VSBT,这仍然是一个问题.唯一要报告的是错误从v14更改为v15.将同一目录复制到v15后,错误再次消失.但是,出现了另一个看似无关的错误:
C:\ Program Files(x86)\ Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1124,5):错误MSB3644:框架的参考程序集".NETCore,Version = v5.0"未被发现.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.
.NETCore,Version=v5.0 通过将以下目录从本地计算机复制到构建服务器来解决错误:
C:\Program …Run Code Online (Sandbox Code Playgroud) 我有一些继承自 Application ResourceDictionary 中定义的隐式样式的问题。我尝试了几种不同的方法,但每种方法都以一种或另一种形式不成功。
<Style TargetType="Button">
<Setter Property="BackgroundColor" Value="#1386F1" />
<Setter Property="TextColor" Value="White" />
<Setter Property="FontAttributes" Value="Bold" />
<Setter Property="HeightRequest">
<OnPlatform x:TypeArguments="x:Double" iOS="30" Android="50" />
</Setter>
<Style.Triggers>
<Trigger TargetType="Button" Property="IsEnabled" Value="False">
<Setter Property="BackgroundColor">
<OnPlatform x:TypeArguments="Color" iOS="#E8E8E8" />
</Setter>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
<Style x:Key="LoginButtonStyle" TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Setter Property="BackgroundColor" Value="#024886" />
<Setter Property="Margin">
<OnPlatform x:TypeArguments="Thickness" iOS="0,5" />
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
<Button Style="{StaticResource LoginButtonStyle}" />
Run Code Online (Sandbox Code Playgroud)
引发异常“未找到键 {x:Type Button} 的静态资源”。这就是我记得在 WPF 中这样做的方式,但我假设 Xamarin XAML 不支持此操作。
我试图NgForm通过拦截onSubmit函数来添加内置指令的功能,以防止双重提交和无效提交,但我没有找到一种方法,没有猴子修补.
我真的不希望这与指令一起工作,因为它们不是真正的"提供者",但我还是尝试了它(无济于事).
import { Injectable } from '@angular/core';
import { NgForm } from '@angular/forms';
@Injectable()
export class NgFormDecorator extends NgForm {
constructor() {
super(null, null);
}
onSubmit($event: Event): boolean {
// TODO: Prevent submission if in progress
return super.onSubmit($event);
}
}
// Module configuration
providers: [{
provide: NgForm,
useClass: NgFormDecorator
}]
Run Code Online (Sandbox Code Playgroud)
这很好用,但显然不理想.
import { Directive, Output, EventEmitter } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Observable } from 'rxjs/Observable';
import …Run Code Online (Sandbox Code Playgroud) 我有以下代码块可以正常工作;
var boughtItemsToday = (from DBControl.MoneySpent
bought in BoughtItemDB.BoughtItems
select bought);
BoughtItems = new ObservableCollection<DBControl.MoneySpent>(boughtItemsToday);
Run Code Online (Sandbox Code Playgroud)
它从我的 MoneySpent 表中返回数据,其中包括 ItemCategory、ItemAmount、ItemDateTime。
我想将其更改为按 ItemCategory 和 ItemAmount 分组,这样我就可以看到我把大部分钱花在哪里了,所以我创建了一个 GroupBy 查询,最后得到了这个;
var finalQuery = boughtItemsToday.AsQueryable().GroupBy(category => category.ItemCategory);
BoughtItems = new ObservableCollection<DBControl.MoneySpent>(finalQuery);
Run Code Online (Sandbox Code Playgroud)
这给了我 2 个错误;
错误 1 “System.Collections.ObjectModel.ObservableCollection.ObservableCollection(System.Collections.Generic.List)”的最佳重载方法匹配有一些无效参数
错误 2 参数 1:无法从“System.Linq.IQueryable>”转换为“System.Collections.Generic.List”
这就是我被困的地方!如何使用 GroupBy 和 Sum 聚合函数在 1 个 LINQ 查询中获取我的类别和相关支出的列表?!
感激地收到任何帮助/建议。
标记
angular ×1
c# ×1
group-by ×1
inheritance ×1
javascript ×1
linq ×1
msbuild ×1
rxjs ×1
sum ×1
typescript ×1
uwp ×1
xamarin ×1
xaml ×1