小编Mik*_*ray的帖子

添加post build事件而不覆盖现有事件

我有一个Powershell脚本(由我的NuGet包运行),它将一个post build事件添加到用户的Visual Studio项目中.

$project.Properties | where { $_.Name -eq "PostBuildEvent" } | foreach { $_.Value = "xcopy `"`$(ProjectDir)MyFolder`" `"`$(OutDir)`"" }
Run Code Online (Sandbox Code Playgroud)

不幸的是,它目前覆盖了现有的post build事件.如果尚未存在构建事件,我如何修改Powershell脚本以附加它?

我之前从未使用过Powershell,但我尝试将其添加到foreach中,但这不起作用:

$_.Value = "$_.Value`nxcopy `"`$(ProjectDir)MyFolder`" `"`$(OutDir)`""
Run Code Online (Sandbox Code Playgroud)

只是给出:

System .__ ComObject.Value xcopy"$(ProjectDir)MyFolder""$(OutDir)"

powershell post-build-event visual-studio nuget

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

在C#中使用语句而不实现Dispose方法

我试图理解在C#中使用块.我可以在Using语句中创建一个自定义对象,如下所示,它不实现IDisposable接口吗?

Class A
{
}

using(A a = new A())
{
}
Run Code Online (Sandbox Code Playgroud)

它给出了错误,说"错误1'ConsoleApplication1.A':在using语句中使用的类型必须可以隐式转换为'System.IDisposable'"

如何更正此错误?我不想做A类:IDisposable

还有其他方法吗?或者强制要求我们需要在这些使用块内部使用的自定义对象中实现IDisposable Dispose方法?

编辑:我不期望MSDN和数千个网站中的定义.我只是想了解这个错误以及整改

.net c# using c#-4.0

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

.IsKeyDown(按键)不工作?

我是C#的新手(从Web开发世界转移).

无论如何,我正在制作一个简单的背景颜色更改程序,它接受用户的输入.我有三个颜色变量(这是我进入这个:backgroundColor = new Color(redIntensity, greenIntensity, blueIntensity);)

那么在Update()方法中我有这个:

        //[colorIntensity] = 0 then count up...when pressed
        //Changes background color
        KeyboardState keyState = new KeyboardState();

        if (keyState.IsKeyDown(Keys.R))
        {
            redIntensity++;
        }
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用!但是,如果我改变:

        if(keyState.IsKeyDown(Keys.R)) ...
Run Code Online (Sandbox Code Playgroud)

至:

       if(keyState.IsKeyUp(Keys.R)) ...
Run Code Online (Sandbox Code Playgroud)

它工作正常......

那么,有什么建议吗?

编辑:我正在使用XNA Framework.

c# xna

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

如何设置名称为字符串形式的对象的属性?

IDE:Visual Studio 2010,C#,.NET 4.0,Winforms应用程序.在我开始之前看到这个课程:

public class Car
{
   private string _break;         

   public string Break
   {
      get { return _break; }
      set { _break = value; }
   }
}
Run Code Online (Sandbox Code Playgroud)

我有另一堂课:

public class Runner
{
   Car cObj = new Car();

   string propertyName = "Break";
   //cobj.Break = "diskBreak"; I can do this but I have property name in string format  

   cobj[propertyName] = "diskBreak"; // I have the property name in string format
   // and I want to make it's Property format please suggest …
Run Code Online (Sandbox Code Playgroud)

c# reflection

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

ContinueWith 作为 await 运算符的替代

我的应用程序使用脚本。到目前为止,我已经将 C# 用于脚本并使用CodeDomProvider. 但是,我一直在考虑使用NLuafork( 的 fork LuaInterface)切换到 Lua ,因为编写脚本要容易得多,而且我熟悉语法。

但是,我面临一个问题。目前,我有一个asynchronous方法可以返回一个Task<bool>. 它使用一个TaskCompletionSource对象并返回它的Result. 这样一来,我可以阻止脚本的执行,因为这里等到Result了的TaskCompletionSource目标已定,然后才返回此Result

现在,有了 Lua - 它是不同的。我显然不能使用await运算符,因为它是 C# 5.0 的语法,而你不能在 Lua 中使用它。所以这就是为什么我要问是否有解决方法。我希望能够获得与我的旧代码(发布在这篇文章下方)相同的结果,而无需使用await运算符。有人告诉我,我可以用 来做到这一点Task.ContinueWith,但我不熟悉这个,而且网上的例子很乏味。如果有人可以用我的代码向我展示一个示例,那就太好了。

这是我的方法:

public async Task<bool> ReturnResult()
{
     this.Response = new TaskCompletionSource<bool>();

     return await this.Response.Task;
}
Run Code Online (Sandbox Code Playgroud)

这是我在脚本中使用它的方式:

var result = await ReturnResult();
Run Code Online (Sandbox Code Playgroud)

Result该的TaskCompletionSource目标是通过我的代码另一部分设置。

基本上,如果您仍然无法理解我想要实现的目标 - 一种停止执行的方法,直到代码的另一部分设置了响应。但是,它必须是asynchronous,因为我不希望我的主线程卡住。

编辑:尝试了 JonSkeet …

c# lua asynchronous task

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

C#在列表中迭代时设置对象的属性

C#不允许我这样做.

foreach (Point point in filledPoints)
{
    point.X = 0;
} 
Run Code Online (Sandbox Code Playgroud)

filledPoints是一个List<Point> 它给了我一个编译器错误:"filledPoints是一个foreach迭代变量,因此无法编辑关联的成员"(对不起,该消息是德语,我很难翻译).但这有效:

foreach (Point point in filledPoints)
{
    Point point2 = point;
    point2.X = point2.X / oldSize.Width * Size.Width;
}   
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用,是否有更优雅的方式绕过它?

c# iteration properties

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

将包含变量的字符串保存到文件c#中

您好我正在尝试将大字符串保存到文件中

string _ULSWcalc = "1.35 * " + _Gd + "+ 1.5 * " + _Wd + "1.5 * " + _Qd " * 0.8";
File.WriteAllLines("C:\\aab.txt", _ULSWcalc);
Run Code Online (Sandbox Code Playgroud)

_Gd _Wd并且_Qd都是变量而且是"".它们都很明确,程序无需File.WriteAllLines线路

但如果我放置它我得到这2错误

错误2参数2:无法从'string'转换为'System.Collections.Generic.IEnumerable'

错误1'System.IO.File.WriteAllLines(string,System.Collections.Generic.IEnumerable)'的最佳重载方法匹配有一些无效的参数

c#

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