小编Vla*_*adL的帖子

在WinForm应用程序中播放MP3文件

我正在开发一个WinForm应用程序.我想在用户点击按钮时播放MP3文件.

MP3文件位于执行应用程序的计算机的文件系统中.
我用谷歌搜索了一段时间,我找到了有关System.Media.SoundPlayer课程的信息.但我已经读过SoundPlayer该类只能用于播放.wav格式的文件.

可以使用哪些类来播放.mp3格式的文件?

任何帮助将不胜感激.

.net c# mp3 winforms

45
推荐指数
3
解决办法
17万
查看次数

在运行时期间动态地向TableLayoutPanel添加控件

我有一个TableLayoutPanel,以两列和0行开头.我需要做的是,动态添加一行并用不同的控件填充两列(它将是面板).在Form1中,我以这种方式创建TableLayout:

TableLayoutPanel Table = new TableLayoutPanel();
Table.Location = new Point(10, 40);
Table.Size = new Size(620,100);
Table.AutoSize = true;
Table.Name = "Desk";
Table.ColumnCount = 2;
Table.RowCount = 0;
Table.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
Table.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddRows;
this.Controls.Add(Table);
Run Code Online (Sandbox Code Playgroud)

之后在运行时我会得到我需要多少行,如果它们将填充Panel或某些Label.可能会发生在同一行中,将是Panel,right Label等.

.net c# tablelayoutpanel winforms

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

调整图像的亮度对比度和灰度系数

什么是在.NET中调整图像的亮度对比度和灰度系数的简单方法

将自己发布答案以便稍后找到它.

.net c# image image-processing brightness

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

Odata - 嵌套$ select和$ expand

http://services.odata.org/V4/Northwind/Northwind.svc/

我试图获得所有Customers,他们Orders和相应的Order_Details,并使用嵌套$expand的.要查询我正在使用以下链接的数据:http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$expand=Orders($expand=Order_Details)

现在我正在尝试使用限制数据$select.问题是我找不到$select用于中间表的正确语法- Orders.我可以将它应用到顶部表格 - Customers并将其应用于底部表格- Order_Details如下所示:

http://services.odata.org/V4/Northwind/Northwind.svc/Customers?$select=CustomerID&$expand=Orders($expand=Order_Details($select=UnitPrice))

在我的情况下,是否可以使用$ select表示中间的表格Orders

expand select entity odata

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

防止在非托管代码中使用的托管引用的垃圾回收

我的C#应用​​程序使用包装的C++代码进行计算.

C++标题:

__declspec(dllexport) void SetVolume(BYTE* data, unsigned int width);
Run Code Online (Sandbox Code Playgroud)

C++/CLI包装器:

void SetVolume(array<Byte>^ data, UInt32 width) 
{
    cli::pin_ptr<BYTE> pdata = &data[0];
    pal->SetVolume(pdata, width); 
}
Run Code Online (Sandbox Code Playgroud)

C# :

public startCalc()
{
    byte[] voxelArr = File.ReadAllBytes("Filtered.rec");
    palw.SetVolume(voxelArr, 490);
    //GC.KeepAlive(voxelArr); makes no sense
}
Run Code Online (Sandbox Code Playgroud)

C++ SetVolume函数启动异步计算.voxelArr不再从受管方引用,并且是垃圾回收.

在非托管代码完成它的工作而不声明voxelArr为全局变量之前,如何防止此引用的垃圾收集?创建数组副本不是一个选项,因为实际上有很多数据.内部的积极等待startCalc()也不好.

c# garbage-collection c++-cli wrapper

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

Visual Studio 2013调用32位aspnet_compiler而不是64位

我的解决方案包含一些.net项目,其中一个是ASP.NET MVC项目,我正在尝试发布.所有配置都设置正确,x32和x64,其中没有设置为AnyCPU.

问题:

如果我尝试将项目发布为32位,一切都很好,但尝试以64位模式发布失败并显示错误:

Could not load file or assembly "ProjectA" or one of its dependencies. 
An attempt was made to load a program with an incorrect format.
Run Code Online (Sandbox Code Playgroud)

我尝试过并注意到了什么:

自VS 2013以来,MSbuild是VS的一部分而不是.NET Framework的一部分.如果我只是在x64模式下构建解决方案,那么32位msbuild "C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe"首先运行并启动64位msbuild "C:\Program Files (x86)\MSBuild\12.0\Bin\amd64\MSBuild.exe"所以正常构建没有发布工作就好了.

但是,如果我选择publish,32位MSbuild首先运行,然后它启动32位aspnet_compiler c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe而不是64位,这导致我上面提到的错误.

到目前为止,我发现的唯一解决方法是更换

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe"
Run Code Online (Sandbox Code Playgroud)

64位的

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe"
Run Code Online (Sandbox Code Playgroud)

题:

对我的问题有没有更好的(合法的)解决方案?这看起来像VS中的一个错误

msbuild asp.net-mvc aspnet-compiler visual-studio visual-studio-2013

9
推荐指数
2
解决办法
2583
查看次数

了解ASP.NET MVC5的新认证机制

嗨我试图了解新的身份验证机制如何在SPA模板中的MVC5中工作,我似乎感到困惑.我的最终目标是创建一个将暴露给SPA,iOS,Android和Windows的API电话客户

这是我的理解:

我明白在启动时不知何故装饰的类:

[assembly: OwinStartup(typeof(WebApplication1.Startup))]
Run Code Online (Sandbox Code Playgroud)

神奇地调用ConfigureAuth方法:

在这个方法中,我有3行代码,在启动类构造函数中,我初始化了OAuth身份验证选项:

 static Startup(){
      PublicClientId = "self";

      UserManagerFactory = () => new UserManager<IdentityUser>(new UserStore<IdentityUser>());

      OAuthOptions = new OAuthAuthorizationServerOptions {
                TokenEndpointPath = new PathString("/Token"),
                Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
                AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
                AllowInsecureHttp = true
      };
}

public void ConfigureAuth(IAppBuilder app)
{
     app.UseCookieAuthentication(new CookieAuthenticationOptions());
     app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
     app.UseOAuthBearerTokens(OAuthOptions);
}
Run Code Online (Sandbox Code Playgroud)

ConfigureAuth中的前两行似乎将我的应用程序和外部应用程序设置为使用cookie来存储身份验证状态,而第三行似乎表明它正在为我的应用程序使用承载令牌.

从目前为止我对移动设备有限的了解,本机应用程序不了解cookie,我应该使用令牌进行身份验证.

如果是这种情况,不应该将externalSignIn设置为Bearer tokes而不是外部cookie吗?

在调试时我还注意到在OAuthProvider中,身份验证类型实际上设置为bearrer令牌.如果是这样的话,这行代码实际上是这样做的:

app.UseCookieAuthentication(new CookieAuthenticationOptions());

对于如何工作的一些澄清将非常感激我只能在网上找到信息,告诉我如何使用外部登录.

asp.net-mvc oauth-2.0 asp.net-mvc-5

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

从基类继承时的引用规则

鉴于项目A是C#类库,而项目B是一个依赖于项目A的控制台应用程序.

在项目A中定义了以下类:

public class ActionMailNotifier : RazorMailerBase
{
        private readonly string _viewPath;
        private readonly EmailHost _emailConfig;
                   ...
                   ...
}
Run Code Online (Sandbox Code Playgroud)

"RazorMailBase"包含在项目A引用的外部DLL ActionMailer.dll中.

在项目B中定义了以下类:

public class EmailFareMonitorAlertNotifier : ActionMailNotifier
{
                        ...
                        ...
}
Run Code Online (Sandbox Code Playgroud)

如果Project B中未引用ActionMailer.dll,编译器将生成一条错误消息,指示需要对ActionMailer.dll的引用.有没有办法构建它,以便在项目B中不需要引用外部dll?

c#

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

以编程方式升级Visual Studio解决方案和项目文件

我有很多可视工作室项目,使用安装程序交付给客户.安装完成后,所有项目和解决方案文件都应该是最新安装的Visual Studio版本.有什么办法转换了很多项目

我试过以下:

1)解析文件并替换不同的属性等ToolsVersion.它快速但不可靠,应该针对每个新的Visual Studio进入市场(从现在开始每年AFAIK)

2)使用devenv升级功能,可靠但非常慢:

string[] files = Directory.GetFiles(@"c:\MyTmp", "*.sln", SearchOption.AllDirectories);
foreach (string file in files)
{
    Process process = new Process();
    process.StartInfo.FileName = pathToTheLatestVS;
    process.StartInfo.Arguments = "/Upgrade \"" + file + "\"";
    process.Start();
    process.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)

3)尝试创建一个隐藏的VS实例,并按照此处的描述操作解决方案,但没有运气.

那么可以快速可靠地将许多项目/解决方案文件升级到特定的Visual Studio版本吗?

.net c# visual-studio

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

从Web应用程序获取DefaultAppPool AppData文件夹

我有一个从DefaultAppPool帐户运行的Web应用程序.我想将一些文件写入DefaultAppPool的AppData文件夹(或任何其他文件夹,可以从我的应用程序运行的帐户100%访问)

我试过了

Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData)
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,它返回一个空字符串.

Environment.GetFolderPath(System.Environment.SpecialFolder.UserProfile)
Run Code Online (Sandbox Code Playgroud)

C:\\Users\DefaultAppPool按预期返回.

如何获取DefaultAppPool的AppData路径?

编辑: 此代码在模型中执行

c# asp.net asp.net-mvc iis-7

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