从字面上看,我认为这是我所面临的唯一技术挑战,至今我还没有找到解决的方法。
使用Visual Studio 2012专业版(也发生在Visual Studio 2010中),我将使用一个简单的ConsoleApplication来测试代码,完成编码测试,便笺本或Sandbox(如果需要)。对于我一生,我无法阻止错误:
错误12无法将文件“ obj \ x86 \ Debug \ ConsoleApplication.exe”复制到“ bin \ Debug \ ConsoleApplication.exe”。该进程无法访问文件“ bin \ Debug \ ConsoleApplication.exe”,因为它正在被另一个进程使用。控制台应用程序
错误11无法将“ obj \ x86 \ Debug \ ConsoleApplication.exe”复制到“ bin \ Debug \ ConsoleApplication1.exe”。重试计数超过10。失败。ConsoleApplication1
我有Process Explorer,每次尝试关闭句柄时,都会得到以下信息:
因此,每次我进行简单的代码更改时,在Main正确退出后,我的Console.Application.exe就会被锁定,我只需要坐在那里等待一两分钟即可真正重建代码更改并进行测试。
有什么方法可以阻止这种情况的发生,Main线程自行处理处置,因此尝试手动处置,例如Application.Exit是徒劳的,请参见此处。
class Program
{
static void Main(string[] args)
{
var numbers = GetUniqueRandoms(new Random(), 10, 100);
Console.WriteLine("Numbers before selection sort:");
foreach (var number in numbers)
{
Console.Write("{0},", number);
}
Console.WriteLine();
//selection sort
var pos_min = 0;
for (var i = 0; i < numbers.Length - 1; i++)
{
pos_min = i;
for (var j = i + 1; j < numbers.Length; j++)
{
if (numbers[j] < numbers[i])
pos_min = j;
}
if (pos_min != i)
{
var temp = numbers[i];
numbers[i] = numbers[pos_min];
numbers[pos_min] = temp;
}
}
Console.WriteLine("Numbers after selection sort:");
foreach (var number in numbers)
{
Console.Write("{0},", number);
}
}
static int[] GetUniqueRandoms(Random random, int count, int max)
{
var result = new List<int>(count);
var set = new HashSet<int>();
for (var i = 0; i < count; i++)
{
int num;
do
{
num = random.Next(1, max);
} while (!set.Add(num));
result.Add(num);
}
return result.ToArray();
}
}
@AntoninLejesk的回答是一个很好的尝试,但对我没有用。我在这里找到了一个很好的答案:Visual Studio 2010生成文件锁定问题
您创建一个名为“ VisualStudioLockWorkaround”的ConsoleApplication.exe,并在预构建脚本中调用该exe,传递目标路径,就像一个超级按钮一样,对于解决方案而言,它的作用最大为@Godeke。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句