我认为这是我提出的唯一技术挑战,我还没有找到解决问题的方法。
使用Visual Studio 2012专业版,也发生在Visual Studio 2010中,我使用简单的ConsoleApplication来测试代码,完成编码测试,使用便笺簿或Sandbox。对于我的生活,我无法阻止错误:
错误12无法将文件“obj \ x86 \ Debug \ ConsoleApplication.exe”复制到“bin \ Debug \ ConsoleApplication.exe”。该进程无法访问文件'bin \ Debug \ ConsoleApplication.exe',因为它正由另一个进程使用。 ConsoleApplication
错误11无法将“obj \ x86 \ Debug \ ConsoleApplication.exe”复制到“bin \ Debug \ ConsoleApplication1.exe”。超过重试次数10.失败。 ConsoleApplication1
我有Process Explorer,每次尝试关闭句柄时都会得到以下内容:
所以每次我做一个简单的代码更改,主要退出后我的Console.Application.exe被锁定,我必须坐在那里等待一两分钟才能真正重建代码更改并测试< /强>
有没有办法阻止这种情况发生,主线程自己处理处理,所以尝试手动处理,如Application.Exit是徒劳的,请参阅here
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();
}
}
答案 0 :(得分:1)
不是真正的解决方案
好的,这是预构建脚本。 %Date%
和move
的解析取决于本地化,可能对您不起作用。键是For /f "Tokens=2,3,4 Delims=/. " %%i In ("%Date%") Do @(
Set Month=%%j& Set Day=%%i& Set Year=%%k
)
set ActDate=%Year%_%Month%_%Day%
For /f "Tokens=1,2,3 Delims=/.:, " %%i In ("%Time%") Do @(
Set Hour=0%%i& Set Min=%%j& Set Sec=%%k
)
set ActTime=%Hour:~-2,2%-%Min%-%Sec%
move c:\\Users\\Antonˇn\\Desktop\\evidence\\EvidenceSolution\Evidence\bin\Debug\evidence.exe c:\\Users\\Antonˇn\\Desktop\\evidence\\garbage\%ActDate%__%ActTime%__evidenceDebug.exe
move c:\\Users\\Antonˇn\\Desktop\\evidence\\EvidenceSolution\Evidence\bin\Release\evidence.exe c:\\Users\\Antonˇn\\Desktop\\evidence\\garbage\%ActDate%__%ActTime%__evidenceRelease.exe
echo 0
命令,程序集文件被移走,编译器很高兴。
$ cat FLOW009.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv)
{
char aline[100];
int t;
int quantity;
int price;
FILE *fh = fopen("FLOW009.txt", "rt");
if (fh == NULL) {printf("open failed"); exit(1);}
if (fgets(aline, 80, fh) != NULL) {
sscanf(aline, "%d", &t);
if (t < 1 || t > 1000) {
printf("ERROR: Value of t, %d, is outside the range 1 to 1000\n", t);
exit(1);
}
while (fgets(aline, sizeof(aline), fh) != NULL) {
sscanf(aline, "%d %d", &quantity, &price);
if (quantity > 0 && price <= 100000) {
printf("%.6f\n", (float)quantity * (float)price);
} else {
printf("ERROR: Quantity and price are not within accepted limits.\n");
}
}
}
exit(0);
}
答案 1 :(得分:0)
您创建了一个名为&#34; VisualStudioLockWorkaround&#34;的VisualApplication.exe。并在你的预构建脚本中调用exe,传递目标路径,像魅力一样工作,最大程度上是@Godeke的解决方案。
答案 2 :(得分:0)
以上讨论的解决方案均不适用于我。 我不知道如何,但是重新启动计算机可以挽救我的生命。