小编Bij*_*ton的帖子

如何在WPF中更改C#的字体颜色

我创建了一个简单的日历应用程序,我想更改显示的日期名称的颜色.我创建了一个简单的条件:

if (nameDay.Text.Equals("Sunday"))
{
    daytxt.Foreground = Brushes.Red;
}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,颜色会永久变化.当日期名称更改为"星期一"时,文本的颜色仍为红色,但应为黑色.我该如何解决我的问题?

c# wpf

21
推荐指数
1
解决办法
4万
查看次数

更改列表框中contentpresenter的前景颜色

我为列表框创建了以下样式,该列表框将在某些文本旁边显示图像:

<Style x:Key="ImageListBoxStyle" TargetType="{x:Type ListBox}">
    <Setter Property="SnapsToDevicePixels" Value="true"/>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
    <Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
    <Setter Property="ItemContainerStyle">
        <Setter.Value>
            <!-- Simple ListBoxItem - This is used for each Item in a ListBox. The item's content is placed in the ContentPresenter -->
            <Style TargetType="{x:Type ListBoxItem}">
                <Setter Property="SnapsToDevicePixels" Value="true"/>
                <Setter Property="OverridesDefaultStyle" Value="true"/>
                <Setter Property="VerticalContentAlignment" Value="Center"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ListBoxItem}">
                            <Grid SnapsToDevicePixels="true">
                                <Border x:Name="Border">
                                    <Grid Height="40">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="Auto"/>
                                            <ColumnDefinition Width="*"/>
                                        </Grid.ColumnDefinitions>
                                        <Image
                                            x:Name="DisplayImage"
                                            Source="{Binding Path=ThumbnailImage}"
                                            Height="30" …
Run Code Online (Sandbox Code Playgroud)

wpf contentpresenter foreground

19
推荐指数
3
解决办法
4万
查看次数

在XPS文件中打印的重复图像

首先,我想指出,我已将此作为微软的一个错误提出,但他们不愿意在此时修复它.我正在寻找的是一种解决方法或更好的方式来实现我想要做的事情,因为我们的客户认为这是一个相当重要的问题.

代码

MainWindow.xaml

<Grid x:Name="mainGrid">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <ListBox ItemsSource="{Binding Images}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Image Source="{Binding}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

    <Button Content="Print to file" Grid.Row="1" Click="PrintToFile_Click"/>
    <Button Content="Print to device" Grid.Row="2" Click="PrintToDevice_Click"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public IList<byte[]> Images { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        Assembly currentAssembly = Assembly.GetExecutingAssembly();

        this.Images = new List<byte[]>
        {
            ReadToEnd(currentAssembly.GetManifestResourceStream("PrintingInvestigation.Images.Chrysanthemum.jpg")),
            ReadToEnd(currentAssembly.GetManifestResourceStream("PrintingInvestigation.Images.Desert.jpg")),
            ReadToEnd(currentAssembly.GetManifestResourceStream("PrintingInvestigation.Images.Hydrangeas.jpg")),
        };

        this.DataContext = this;
    }

    public static byte[] ReadToEnd(System.IO.Stream stream)
    {
        long originalPosition …
Run Code Online (Sandbox Code Playgroud)

c# printing wpf xps

6
推荐指数
1
解决办法
316
查看次数

如何弃用 nuget 包

我的一个开源项目有 2 个 nuget 包:

  1. 富有表现力(.NET 完整)
  2. Expressive.Standard(.NET 标准)

2 最初是作为一项调查而创建的,以确保其可行性。现在我想把它包在 1 下,但我可以看到有人下载了 2 号包。虽然下载量并不大,但我仍然知道简单地删除该包会引起任何问题。

将人员从 2 迁移到 1 下的打包版本的最佳方法是什么?是否会发布2的新版本表明它正在被1取代?

最终我想弃用 2 并表明它正在被 1 取代,但我只能找到,但实际上并没有显示它正在实现。

nuget nuget-package

6
推荐指数
1
解决办法
7040
查看次数

PHP服务器上的iOS 7收据验证问题

2天的不间断搜索,我在IAP的一个重要问题上空白.我们需要服务器来验证收据,响应始终是21002.

在我发送的客户端上

NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
NSDictionary* post = @{@"receipt":[receipt base64EncodedStringWithOptions:0]};
[ServerRequest requestWithUrl:url Callback:nil SendToIM:NO PostData:post];//does standard _POST to our php server
Run Code Online (Sandbox Code Playgroud)

这是一个沙箱收据作为base64字符串,然后才能到达服务器

MIIU2gYJKoZIhvcNAQcCoIIUyzCCFMcCAQExCzAJBgUrDgMCGgUAMIIEiwYJKoZIhvcNAQcBoIIEfASCBHgxggR0MAoCAQgCAQEEAhYAMAoCARICAQEEAhYAMAoCARMCAQEEAgwAMAoCARQCAQEEAgwAMAsCAQECAQEEAwIBADALAgELAgEBBAMCAQAwCwIBDgIBAQQDAgFTMAsCAQ8CAQEEAwIBADALAgEQAgEBBAMCAQAwCwIBGQIBAQQDAgEDMAwCAQoCAQEEBBYCNCswDQIBAwIBAQQFDAMwLjYwDQIBDQIBAQQFAgMBEdQwDgIBCQIBAQQGAgRQMjI4MBgCAQQCAQIEEM7oReI9bPs0X/hqFDngWuUwGwIBAAIBAQQTDBFQcm9kdWN0aW9uU2FuZGJveDAcAgEFAgEBBBQ8LF7D7deEfXmQd9NITmWuDFXXkDAeAgEMAgEBBBYWFDIwMTQtMDMtMjFUMTk6NDU6MDhaMCwCAQICAQEEJAwiY29tLmNsaXB3aXJlZ2FtZXMuQ3JpdHRlci1Db25xdWVzdDA4AgEHAgEBBDBrGHw8H08L2bC6tSu08pjZKzOeXY8iNjZxZFrJSPr1QnpwMtHhPd44Lky0BciZY0wwOwIBBgIBAQQz4eLimps057PHKFJAyTiNF4fTO5uWOQQkM1dk2ivH6xnWf3/e8qD+9GzS2HH2qzIzZvonMIIBTAIBEQIBAQSCAUIxggE+MAsCAgasAgEBBAIWADALAgIGrQIBAQQCDAAwCwICBrACAQEEAhYAMAsCAgayAgEBBAIMADALAgIGswIBAQQCDAAwCwICBrQCAQEEAgwAMAsCAga1AgEBBAIMADALAgIGtgIBAQQCDAAwDAICBqUCAQEEAwIBATAMAgIGqwIBAQQDAgEBMAwCAgauAgEBBAMCAQAwDAICBq8CAQEEAwIBADAMAgIGsQIBAQQDAgEAMBICAgamAgEBBAkMB0dlbXM1MDAwGwICBqcCAQEEEgwQMTAwMDAwMDEwNTI3MTk4ODAbAgIGqQIBAQQSDBAxMDAwMDAwMTA1MjcxOTg4MB8CAgaoAgEBBBYWFDIwMTQtMDMtMjFUMTk6NDU6MDhaMB8CAgaqAgEBBBYWFDIwMTQtMDMtMjFUMTU6MTM6NDdaMIIBTAIBEQIBAQSCAUIxggE+MAsCAgasAgEBBAIWADALAgIGrQIBAQQCDAAwCwICBrACAQEEAhYAMAsCAgayAgEBBAIMADALAgIGswIBAQQCDAAwCwICBrQCAQEEAgwAMAsCAga1AgEBBAIMADALAgIGtgIBAQQCDAAwDAICBqUCAQEEAwIBATAMAgIGqwIBAQQDAgEBMAwCAgauAgEBBAMCAQAwDAICBq8CAQEEAwIBADAMAgIGsQIBAQQDAgEAMBICAgamAgEBBAkMB0dlbXM1MDAwGwICBqcCAQEEEgwQMTAwMDAwMDEwNTI5NTk3NDAbAgIGqQIBAQQSDBAxMDAwMDAwMTA1Mjk1OTc0MB8CAgaoAgEBBBYWFDIwMTQtMDMtMjFUMTk6NDU6MDhaMB8CAgaqAgEBBBYWFDIwMTQtMDMtMjFUMTk6NDU6MDhaoIIOVTCCBWswggRToAMCAQICCBhZQyFydJz8MA0GCSqGSIb3DQEBBQUAMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECgwKQXBwbGUgSW5jLjEsMCoGA1UECwwjQXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMxRDBCBgNVBAMMO0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEwMTExMTIxNTgwMVoXDTE1MTExMTIxNTgwMVoweDEmMCQGA1UEAwwdTWFjIEFwcCBTdG9yZSBSZWNlaXB0IFNpZ25pbmcxLDAqBgNVBAsMI0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zMRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALaTwrcPJF7t0jRI6IUF4zOUZlvoJze/e0NJ6/nJF5czczJJSshvaCkUuJSm9GVLO0fX0SxmS7iY2bz1ElHL5i+p9LOfHOgo/FLAgaLLVmKAWqKRrk5Aw30oLtfT7U3ZrYr78mdI7Ot5vQJtBFkY/4w3n4o38WL/u6IDUIcK1ZLghhFeI0b14SVjK6JqjLIQt5EjTZo/g0DyZAla942uVlzU9bRuAxsEXSwbrwCZF9el+0mRzuKhETFeGQHA2s5Qg17I60k7SRoq6uCfv9JGSZzYq6GDYWwPwfyzrZl1Kvwjm+8iCOt7WRQRn3M0Lea5OaY79+Y+7Mqm+6uvJt+PiIECAwEAAaOCAdgwggHUMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUiCcXCam2GGCL7Ou69kdZxVJUo7cwTQYDVR0fBEYwRDBCoECgPoY8aHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vY2VydGlmaWNhdGlvbmF1dGhvcml0eS93d2RyY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUdXYkomtiDJc0ofpOXggMIr9z774wggERBgNVHSAEggEIMIIBBDCCAQAGCiqGSIb3Y2QFBgEwgfEwgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2EvMBAGCiqGSIb3Y2QGCwEEAgUAMA0GCSqGSIb3DQEBBQUAA4IBAQCgO/GHvGm0t4N8GfSfxAJk3wLJjjFzyxw+3CYHi/2e8+2+Q9aNYS3k8NwWcwHWNKNpGXcUv7lYx1LJhgB/bGyAl6mZheh485oSp344OGTzBMtf8vZB+wclywIhcfNEP9Die2H3QuOrv3ds3SxQnICExaVvWFl6RjFBaLsTNUVCpIz6EdVLFvIyNd4fvNKZXcjmAjJZkOiNyznfIdrDdvt6NhoWGphMhRvmK0UtL1kaLcaa1maSo9I2UlCAIE0zyLKa1lNisWBS8PX3fRBQ5BK/vXG+tIDHbcRvWzk10ee33oEgJ444XIKHOnNgxNbxHKCpZkR+zgwomyN/rOzmoDvdMIIEIzCCAwugAwIBAgIBGTANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzETMBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwHhcNMDgwMjE0MTg1NjM1WhcNMTYwMjE0MTg1NjM1WjCBljELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xLDAqBgNVBAsMI0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zMUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9ucyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMo4VKbLVqrIJDlI6Yzu7F+4fyaRvDRTes58Y4Bhd2RepQcjtjn+UC0VVlhwLX7EbsFKhT4v8N6EGqFXya97GP9q+hUSSRUIGayq2yoy7ZZjaFIVPYyK7L9rGJXgA6wBfZcFZ84OhZU3au0Jtq5nzVFkn8Zc0bxXbmc1gHY2pIeBbjiP2CsVTnsl2Fq/ToPBjdKT1RpxtWCcnTNOVfkSWAyGuBYNweV3RY1QSLorLeSUheHoxJ3GaKWwo/xnfnC6AllLd0KRObn1zeFM78A7SIym5SFd/Wpqu6cWNWDS5q3zRinJ6MOL6XnAamFnFbLw/eVovGJfbs+Z3e8bY/6SZasCAwEAAaOBrjCBqzAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUiCcXCam2GGCL7Ou69kdZxVJUo7cwHwYDVR0jBBgwFoAUK9BpR5R2Cf70a40uQKb3R01/CF4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5hcHBsZS5jb20vYXBwbGVjYS9yb290LmNybDAQBgoqhkiG92NkBgIBBAIFADANBgkqhkiG9w0BAQUFAAOCAQEA2jIAlsVUlNM7gjdmfS5o1cPGuMsmjEiQzxMkakaOY9Tw0BMG3djEwTcV8jMTOSYtzi5VQOMLA6/6EsLnDSG41YDPrCgvzi2zTq+GGQTG6VDdTClHECP8bLsbmGtIieFbnd5G2zWFNe8+0OJYSzj07XVaH1xwHVY5EuXhDRHkiSUGvdW0FY5e0FmXkOlLgeLfGK9EdB4ZoDpHzJEdOusjWv6lLZf3e7vWh0ZChetSPSayY6i0scqP9Mzis8hH4L+aWYP62phTKoL1fGUuldkzXfXtZcwxN8VaBOhr4eeIA0p1npsoy0pAiGVDdd3LOiUjxZ5X+C7O0qmSXnMuLyV1FTCCBLswggOjoAMCAQICAQIwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA2MDQyNTIxNDAzNloXDTM1MDIwOTIxNDAzNlowYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5JGpCR+R2x5HUOsF7V55hC3rNqJXTFXsixmJ3vlLbPUHqyIwAugYPvhQCdN/QaiY+dHKZpwkaxHQo7vkGyrDH5WeegykR4tb1BY3M8vED03OFGnRyRly9V0O1X9fm/IlA7pVj01dDfFkNSMVSxVZHbOU9/acns9QusFYUGePCLQg98usLCBvcLY/ATCMt0PPD5098ytJKBrI/s61uQ7ZXhzWyz21Oq30Dw4AkguxIRYudNU8DdtiFqujcZJHU1XBry9Bs/j743DN5qNMRX4fTGtQlkGJxHRiCxCDQYczioGxMFjsWgQyjGizjx3eZXP/Z15lvEnYdp8zFGWhd5TJLQIDAQABo4IBejCCAXYwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFCvQaUeUdgn+9GuNLkCm90dNfwheMB8GA1UdIwQYMBaAFCvQaUeUdgn+9GuNLkCm90dNfwheMIIBEQYDVR0gBIIBCDCCAQQwggEABgkqhkiG92NkBQEwgfIwKgYIKwYBBQUHAgEWHmh0dHBzOi8vd3d3LmFwcGxlLmNvbS9hcHBsZWNhLzCBwwYIKwYBBQUHAgIwgbYagbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRpZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGljZSBzdGF0ZW1lbnRzLjANBgkqhkiG9w0BAQUFAAOCAQEAXDaZTC14t+2Mm9zzd5vydtJ3ME/BH4WDhRuZPUc38qmbQI4s1LGQEti+9HOb7tJkD8t5TzTYoj75eP9ryAfsfTmDi1Mg0zjEsb+aTwpr/yv8WacFCXwXQFYRHnTTt4sjO0ej1W8k4uvRt3DfD0XhJ8rxbXjt57UXF6jcfiI1yiXV2Q/Wa9SiJCMR96Gsj3OBYMYbWwkvkrL4REjwYDieFfU9JmcgijNq9w2Cz97roy/5U2pbZMBjM3f3OgcsVuvaDyEO2rpzGU+12TZ/wYdV2aeZuTJC+9jVcZ5+oVK3G72TQiQSKscPHbZNnF5jyEuAF1CqitXa5PzQCQc3sHV1ITGCAcswggHHAgEBMIGjMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECgwKQXBwbGUgSW5jLjEsMCoGA1UECwwjQXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMxRDBCBgNVBAMMO0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zIENlcnRpZmljYXRpb24gQXV0aG9yaXR5AggYWUMhcnSc/DAJBgUrDgMCGgUAMA0GCSqGSIb3DQEBAQUABIIBAGDp7QPCFzo+Q6jqSoqrEnYd+2JKJ+FHsHjG/JHUS4P7PQISJ7ckRTsA+DGqf87KXF0c6+GMBnpJkpGFQoV6WLEgpM019B1ch+BBtol/WJr2JdZAlXbmzX6+tSx9Uc0lpGR232yx1mM2lgpkZZSNjAFNDeKsjFU9cTiB0dVxLX3teFFU50Nm4DuEqXYqUs4nQ8z9693kgdWKSUBuADB7lbEOqeODs9nS0rxEoQW4HCgto6Uy226AeLZns3NOMsAoR5cXf5hLhyg+mBo+leuNoMWzRFRMDbUQiwe0dsucS4IpdbSJmhAgv4ETCNupB4OzvIdRBNf3ySR+GZ5FDbM9T9Y=
Run Code Online (Sandbox Code Playgroud)

在服务器上

$postData = json_encode(
            array('receipt-data' => $receipt));
Run Code Online (Sandbox Code Playgroud)

//标准cURL帖子并从Apple Sandbox Server获取

我已经阅读了关于此的所有示例和论坛帖子,似乎无法使其正常工作.

我最好的猜测是我的收据编码错误,但我尝试了每种格式选项,我总是得到21002(在我的服务器上).

这里有什么我想念的吗?基本上我正在尝试:1.将NSData收据作为字符串发送到服务器2.让我的服务器ping Apple服务器3.处理有效或无效的收据问题

看来我的第一步是错的,但我不确定.我使用base64encode发送收据数据是错误的吗?

我的服务器上有什么东西需要保留格式吗?

任何和所有的建议非常感谢.

更新:

这是我用来将它发送到服务器的代码(一旦它到达服务器,它正在剪切哈希码中的+)

for (NSString* k in _post)       
{            
    postDataStr = [NSString stringWithFormat:@"%@&%@=%@", postDataStr,k,_post[k]];      
}

_req = [NSMutableURLRequest requestWithURL:_url cachePolicy:nil timeoutInterval:15.0f];    
[_req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];    
[_req setHTTPMethod:@"POST"];    
[_req setHTTPBody:[postDataStr dataUsingEncoding:NSUTF8StringEncoding]];
Run Code Online (Sandbox Code Playgroud)

回答:

当发送到服务器时,+被从我的字符串中删除.我没有做正确的URL编码.我用%2B取代了+它现在有效

php in-app-purchase ios7

5
推荐指数
1
解决办法
3578
查看次数

.NET 4.5.2编译应用程序需要.NET 4.6

从在Visual Studio 2010和.NET 4.0中构建我们的产品升级到Visual Studio 2015和.NET 4.5.2后,我们发现在客户机器上运行产品时出现问题.

我们看到的错误是System.MissingMethodException在启动应用程序时抛出,从查看此处的帖子指向计算机上安装的.NET版本不正确.现在客户机器安装了.NET 4.5.2,因为这是在我们的产品安装过程中安装的.

我们目前解决问题的方法是在客户机器上安装.NET 4.6.

我有一个理论上我理想地想要确认(最好是垃圾并用更可行的东西代替):

  • 我们所有的项目都设置为针对.NET 4.5.2进行编译
  • 编译代码并生成安装程序的构建代理程序包含Visual Studio 2015和.NET 4.6,但它确实安装了必要的.NET 4.5.2框架

我相信因为.NET 4.6安装在机器上它覆盖了.NET 4.5.2.我不知道为什么会发生这种情况,但我看到一些模糊相似的东西,在安装了.NET 4.5的机器上运行的.NET 4.0应用程序表现了.NET 4.5应用程序在这里的表现(如果是我很确定它不应该).我希望有人能够指出我失踪的东西.

我希望我的理论是错的.

附加信息

当应用程序崩溃时,我设法附加了一个调试器,错误是:

找不到方法:'!! 0 [] System.Array.Empty()'.

我的代码中没有使用Array.Empty()的东西.

堆栈跟踪:

at MyApp.DisplayExceptionInfo(Exception ex)
,位于E:\ Build\MyApp\App.xaml.cs中的MyApp.Main(String [] args):第82行

DisplayExceptionInfo只是尝试显示一个Exception,这让我相信早先抛出异常.
Main检查是否有另一个实例正在通过某个Interop运行(我也尝试删除但它没有解决崩溃),然后创建我的App类并运行它.

更新

对不起我不相信我在问题中提供了足够的细节来帮助解决问题的根源.事实证明,TeamCity使用MSBuild构建Visual Studio解决方案,并且在构建过程中会出现以下警告(令人烦恼的是相当好地隐藏在日志中):

[GetReferenceAssemblyPaths] C:\ Program Files(x86)\ MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1097,5):警告MSB3644:框架".NETFramework,Version = v4.5.2"的引用程序集是未找到.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.

我可以确认我确实安装了.NET 4.5.2多目标包,但我会继续调查

msbuild teamcity .net-4.5 visual-studio-2015 .net-4.6

4
推荐指数
1
解决办法
1万
查看次数

MKPolygon - 如何确定 CLLocationCooperative2D 是否位于 CLLocationCooperative2D 多边形中?

我有下面的快速代码,它绘制一个多边形并在 MKMapView 上添加注释。我想弄清楚如何识别注释的坐标是否在多边形内?

import UIKit
import MapKit

class ViewController: UIViewController {

    @IBOutlet weak var mapView: MKMapView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let initialLocation = CLLocation(latitude: 49.140838, longitude: -123.127886)
        centerMapOnLocation(initialLocation)
        addBoundry()

        var annotation = MKPointAnnotation()
        annotation.coordinate = point1
        annotation.title = "Roatan"
        annotation.subtitle = "Honduras"

        mapView.addAnnotation(annotation)
    }

    var points = [CLLocationCoordinate2DMake(49.142677,  -123.135139),
                  CLLocationCoordinate2DMake(49.142730, -123.125794),
                  CLLocationCoordinate2DMake(49.140874, -123.125805),
                  CLLocationCoordinate2DMake(49.140885, -123.135214)]

    var point1 = CLLocationCoordinate2DMake(49.141821, -123.131577)

    func addBoundry() {
        let polygon = MKPolygon(coordinates: &points, count: points.count)

        mapView.addOverlay(polygon)
    }

    let regionRadius: CLLocationDistance = 1000

    func centerMapOnLocation(location: …
Run Code Online (Sandbox Code Playgroud)

mapkit ios mkpolygon swift

2
推荐指数
1
解决办法
3453
查看次数

Visual Studio 更新 (16.8.1) 导致 CI​​ 构建失败

我们最近将我们的构建服务器更新为使用 Visual Studio 16.8.1 和 Xamarin.iOS 14.4.1.3,并且之前运行的 MSBuild 命令遇到了问题。

为了记录,我们在这里构建了一个 Xamarin Forms 解决方案并针对 iOS。

命令是:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\msbuild" MySolution.sln /p:Configuration="AppStore" /p:Platform="iPhone" /p:ServerAddress="" /p:ServerUser=""
Run Code Online (Sandbox Code Playgroud)

我曾尝试搜索它报告的特定错误消息(如下),但到目前为止我还没有找到任何有用的信息。

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\iOS\Xamarin.Shared.targets(230,3):错误 MSB4044:“GetMinimumOSVersion”任务没有给出所需的值参数“SDK 版本”。

更新

在进一步挖掘后,我相信我已经将错误的根源追溯到这些行没有被设置在Xamarin.Shared.props.

<!-- SdkVersion -->
<_SdkVersion Condition="'$(_PlatformName)' == 'macOS'">$(MacOSXSdkVersion)</_SdkVersion>
<_SdkVersion Condition="'$(_PlatformName)' != 'macOS'">$(MtouchSdkVersion)</_SdkVersion>
Run Code Online (Sandbox Code Playgroud)

我一直无法找出是什么设置了 MtouchSdkVersion 以及为什么没有设置它。上面引用的部分正上方的评论指出:

有时,我们为 Xamarin.iOS 和 Xamarin.Mac 项目对同一事物使用不同的变量名称。这里我们尝试统一这些变量

会不会是这种统一改变了曾经可以工作的东西的行为?

msbuild teamcity visual-studio xamarin.ios xamarin

2
推荐指数
1
解决办法
1154
查看次数

何时在 Xamarin 自定义呈现器中取消挂接事件

众所周知,在代码中连接事件处理时,我们冒着将对象留在内存中从而造成内存泄漏的风险。

为了实现一些特殊功能(禁用剪切和复制),我需要在 UWP 上实现自定义渲染器。虽然禁用剪切和复制与我必须连接事件处理程序才能实现这一点的问题并不严格相关。

protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
    base.OnElementChanged(e);

    if (this.Control == null) { return; }

    this.Control.CopyingToClipboard += Control_CopyingToClipboard;
    this.Control.CuttingToClipboard += Control_CuttingToClipboard;
}

private void Control_CuttingToClipboard(TextBox sender, 
                                        TextControlCuttingToClipboardEventArgs args)
{
    args.Handled = true;
}

private void Control_CopyingToClipboard(TextBox sender, 
                                        TextControlCopyingToClipboardEventArgs args)
{
    args.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)

解开这些事件处理程序以防止任何形式的泄漏的正确位置是什么?

我注意到在平台名称空间中IDisposable没有实现VisualElementRenderer<TElement, TNativeElement>UWP但是我无法可靠地证明它被调用了。

更新

按照米查? ?o?nieruk的建议我在检查中添加了 unhooking 以确保OldElement不为空,但是我从未看到任何证据表明它被调用了。

protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
{
    base.OnElementChanged(e);

    if (this.Control == null) { return; } …
Run Code Online (Sandbox Code Playgroud)

c# memory-leaks event-handling xamarin xamarin.forms

1
推荐指数
1
解决办法
660
查看次数