小编Art*_*nes的帖子

PowerShell中的UTF8脚本输出不正确的字符

我使用非ascii字符为PowerShell创建了一个UTF8脚本.

characters.ps1:

Write-Host "ç â ã á à"
Run Code Online (Sandbox Code Playgroud)

在PowerShell控制台中运行脚本时,它会输出错误的字符.

在此输入图像描述

但是,如果我直接在控制台中编写字符,它们将按预期显示:

在此输入图像描述

有谁知道是什么原因造成这种行为?

问题来自于我编写的脚本,其中包含非编码路径,包括非ascii字符.当我尝试将路径作为参数传递给cmdlet时(在我将要复制文件夹的情况下)命令失败,因为它无法找到路径(在屏幕中输出错误).

powershell utf-8 character-encoding

29
推荐指数
2
解决办法
3万
查看次数

在构建服务器中构建Web应用程序时"无法找到CodeDom提供程序类型Microsoft.VisualC.CppCodeProvider"异常

我正在构建服务器中构建/打包Web应用程序,但它失败并出现以下异常:

ASPNETCOMPILER错误ASPCONFIG:无法找到CodeDom提供程序类型"Microsoft.VisualC.CppCodeProvider,CppCodeProvider,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a".

构建服务器:

  • Windows Server 2008 R2标准版
  • TeamCity 8.0.4
  • .NET 4.5
  • Windows SDK for Windows 7和.NET 4
  • Windows SDK for Windows 8和.NET 4.5
  • 便携式类库工具
  • ASP MVC 4

该应用程序是一个ASP MVC 4 Web应用程序,面向.NET 4.5.

构建配置包括使用MSBuild构建解决方案,允许部署到包,以便稍后发布.

通过TeamCity的日志,我可以看到当MSBuild运行"aspnet_compiler.exe"时出现错误.

构建在我的开发机器中没有问题,也可以毫无问题地将它发布到本地IIS.

有谁知道导致这个问题的原因是什么?

UPDATE

请参阅下面的答案.

c# asp.net msbuild teamcity build-server

24
推荐指数
6
解决办法
2万
查看次数

在构建服务器中构建可移植类库项目失败

我最近在构建服务器中构建的应用程序中添加了一些自定义的可移植类库项目.构建工作正常,但在此之后它停止工作并向我显示以下消息:

C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(983,5):警告MSB3644:框架".NETPortable,Version = v4.0,Profile = Profile136"的引用程序集不是找到.

C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1578,5):警告MSB3270:正在构建的项目的处理器体系结构"MSIL"与处理器体系结构之间存在不匹配引用"C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll","AMD64".

错误CS0234:命名空间"系统"中不存在类型或命名空间名称"Linq"(您是否缺少程序集引用?)

构建服务器规范:

该解决方案是.NET 4.0应用程序,可移植项目仅针对.NET4.0 + e Silverlight 5. 便携式目标

我检查了我的开发机器(Windows 8,Visual Studio 2012).确实有一个文件夹"C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136"(事实上,.NET 4.0的配置文件最多可达158).但是,在构建计算机中,只有最多131个配置文件的文件夹.

便携式类库工具是最新的吗?它似乎错过了为最新平台安装配置文件.

UPDATE

我将开发机器的".NETPortable\v4.0\Profile\Profile136"复制到构建服务器,现在应用程序已成功构建.我仍然想知道为什么安装Portable Class Library Tools不能开箱即用.

.net c# silverlight teamcity portable-class-library

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

删除具有一对多关系的子项的父项

我有一个带有Entity Framework 5.0 e Sql Server CE 4.0的.NET4.0应用程序.

我有两个实体,一对多(父/子)关系.我已将其配置为在父删除时级联删除,但由于某种原因它似乎不起作用.

这是我的实体的简化版本:

    public class Account
    {
        public int AccountKey { get; set; }
        public string Name { get; set; }

        public ICollection<User> Users { get; set; }
    }

    internal class AccountMap : EntityTypeConfiguration<Account>
    {
        public AccountMap()
        {
            this.HasKey(e => e.AccountKey);
            this.Property(e => e.AccountKey).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            this.Property(e => e.Name).IsRequired();
        }
    }


    public class User
    {
        public int UserKey { get; set; }
        public string Name { get; set; }

        public Account Account { get; set; …
Run Code Online (Sandbox Code Playgroud)

entity-framework .net-4.0 sql-server-ce entity-framework-5

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

异步WCF自托管服务

我的目标是实现异步自托管WCF服务,该服务将在单个线程中运行所有请求并充分利用新的C#5异步功能.

我的服务器将是一个控制台应用程序中,我将设置一个SingleThreadSynchronizationContext,按指定位置,创建和打开的ServiceHost,然后运行SynchronizationContext,所以所有的WCF请求都在同一个线程来处理.

问题是,尽管服务器能够成功处理同一线程中的所有请求,但异步操作阻止执行并被序列化,而不是隔行扫描.

我准备了一个简化的样本来重现这个问题.

这是我的服务合同(服务器和客户端相同):

[ServiceContract]
public interface IMessageService
{
    [OperationContract]
    Task<bool> Post(String message);
}
Run Code Online (Sandbox Code Playgroud)

服务实现如下(它有点简化,但最终实现可以访问数据库,甚至以异步方式调用其他服务):

public class MessageService : IMessageService
{
    public async Task<bool> Post(string message)
    {
        Console.WriteLine(string.Format("[Thread {0} start] {1}", Thread.CurrentThread.ManagedThreadId, message));

        await Task.Delay(5000);

        Console.WriteLine(string.Format("[Thread {0} end] {1}", Thread.CurrentThread.ManagedThreadId, message));

        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

该服务托管在控制台应用程序中:

static void Main(string[] args)
{
    var syncCtx = new SingleThreadSynchronizationContext();
    SynchronizationContext.SetSynchronizationContext(syncCtx);

    using (ServiceHost serviceHost = new ServiceHost(typeof(MessageService)))
    {
        NetNamedPipeBinding binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);

        serviceHost.AddServiceEndpoint(typeof(IMessageService), …
Run Code Online (Sandbox Code Playgroud)

c# wcf asynchronous servicehost async-await

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

在调试期间在IDE中显示printf消息

我们有一个设备,我想使用printf函数向IDE发送消息以进行调试.设置:

  • ARM Cortex-M3设备

  • ULINK2接口

  • uVision4 IDE

我已按照此链接中的说明操作,以便能够在"Debug(printf)Viewer"中查看消息.首先,我修改了"retarget.c"文件,将输出重定向到ITM界面:

#include <stdio.h>
#include <rt_misc.h>

#pragma import(__use_no_semihosting_swi)

// Para utilização do saida de debug através do ULINK2
#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA          0x01000000

struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;

// Escreve caractere na porta de Debug
int sendchar (int ch)  { …
Run Code Online (Sandbox Code Playgroud)

debugging arm cortex-m3 keil

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

Canplayer不会重播candump文件

我正在尝试使用canplayer重播一些candump文件,但没有成功.当我尝试运行canplayer时,它只是执行并返回,不知道发生了什么.

我到目前为止所做的尝试:

设置1

  • 设置vcan界面
  • 使用cansend和cangen将数据发送到vcan界面,并成功(使用candump验证).
  • 在运行cangen时从vcan0录制了一个candump文件.带有绝对时间戳(-ta)和不带时间戳的录制文件.
  • 尝试使用canplayer重现文件.尝试使用几个参数,无济于事.canplayer只是立即返回,没有任何投诉.如果我弄乱它抱怨的文件或参数.

设置2

  • 将2个PEAK CAN USB适配器设备连接到PC.
  • 使用120欧姆端接电缆将适配器相互连接
  • 开始cangen指向can0并使用candump验证消息到达can1
  • 从can0接口录制的candump文件.
  • 尝试使用canplayer重现文件.但没有成功.

我在两台运行Ubuntu 12.04的不同机器上尝试过这些测试,结果相同.

你知道它可能是什么原因吗?

can-bus socketcan canutils

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

Powershell cmdlet 输出未显示

考虑脚本“test.ps1:

Get-EventLog -list | gm
Run Code Online (Sandbox Code Playgroud)

当从 Powershell 控制台(“.\test.ps1”)调用它时,它会按预期输出成员。

但是,以下脚本不显示“Get-EventLog -list | gm”的输出:

脚本1

Get-EventLog -list | gm
break
Run Code Online (Sandbox Code Playgroud)

脚本2

Get-EventLog -list | gm

$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Continua execucao"
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "Cancela operacao"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice("Title", "Message", $options, 0) 
Run Code Online (Sandbox Code Playgroud)

如果我将“Get-EventLog -list | gm”更改为“Hello World”等文本,则在两种情况下都会正确显示。

为什么不显示 cmdlet 的输出?

powershell

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

HttpClient不会从CookieContainer发送Cookie

我正在使用Visual Studio 2012开发带有WPF(.NET 4.0)客户端的ASP WebAPI(ASP MVC 4)应用程序.客户端需要登录到服务器.我使用FormsAuthentication和身份验证cookie登录.登录已经在ASP MVC中正常工作.

问题是,尽管登录在服务器上成功执行并且cookie被发送回客户端,但是在后续调用服务器时不会发送cookie,即使它CookieContainer与auth cookie集重用.

这是代码的简化版本:

客户

public async Task<UserProfile> Login(string userName, string password, bool rememberMe)
{           
    using (var handler = new HttpClientHandler() { CookieContainer = this.cookieContainer })
    using (var httpClient = new HttpClient(handler))
    {
        httpClient.BaseAddress = new Uri("http://localhost:50000/");

        httpClient.DefaultRequestHeaders.Accept.Add(
            new MediaTypeWithQualityHeaderValue("application/json"));

        var result = await httpClient.PostAsJsonAsync("api/auth/login", new
        {
            username = userName,
            password = password,
            rememberMe = rememberMe
        });

        result.EnsureSuccessStatusCode();

        var userProfile = await result.Content.ReadAsAsync<UserProfile>();

        if (userProfile == null)
            throw new UnauthorizedAccessException();

        return …
Run Code Online (Sandbox Code Playgroud)

asp.net cookies asp.net-web-api

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