'无法复制文件“obj \ x86 \ debug \ ...”'添加四行代码后出错

时间:2013-08-14 17:25:48

标签: c#

我收到了这个错误:

Could not copy the file "obj\x86\Debug\TitleGenerator.exe" because it was not found.

当我尝试编译时,但它没有任何意义。我唯一改变的是添加以下代码行来帮助我调试问题:

#if DEBUG
                if( title.Culture == null || title.Religion == null )
                {

                }
#endif

如果我删除这些行,它编译没有问题。如果我将if语句更改为if ( true ) {},则编译正常。

重新启动Visual Studio无济于事。我也试过重启我的电脑。据我所知,.Net框架和Visual Studio都是最新的。

我正在使用Visual Studio 2012,一个3.5的目标框架,默认语言级别,CSS版本3.0

[编辑]它现在又开始工作了。我所做的只是从输出到日志中删除title.TitleID的输出。

意思是我将Log( " --Title in Ignore List: " + title.TitleID );改为Log( " --Title in Ignore List" );

title的内容在运行时决定,它是列表上foreach循环的对象。

更奇怪的是,如果我将这个类添加到项目中:

public class DebugBreak
{
    [Conditional("DEBUG")]
    public static void TitleIDBreak( Title title, string id )
    {
        if ( title.TitleID == id )
            System.Diagnostics.Debugger.Break();
    }
}

但是,甚至不用它做任何事情,那么它的确有效。我甚至不必调用该方法。只需将文件的构建操作从None更改为Compile就可以了。

3 个答案:

答案 0 :(得分:1)

这通常是由Avast引起的。

如果您运行的是该防病毒软件,请为项目文件夹添加排除项。

我过去曾多次搜索过这个问题。它是一个文件访问问题,所以它可能根本不是你的代码。

答案 1 :(得分:0)

什么类型的标题?甚至定义了吗?即使未定义DEBUG,也会检查语句的语义。

我猜你的代码没有编译。

C#不使用"预处理器"比如早期的C编译器,在编译器甚至看到之前文件已被更改。

答案 2 :(得分:0)

根据您发布的内容,您编写的代码没有任何问题。

您可以尝试的一件事是使用Conditional属性进行调试。类似的东西:

[Conditional("DEBUG")]
static void TitleCheck(Title title)
{
    if( title.Culture == null || title.Religion == null )
    {
        System.Diagnostics.Debugger.Break();
    }
}


private void MyProductionFunction(Title title)
{
    // Do some stuff

    TitleCheck(title); //<< This function call will be omitted completely if 'debug' conditional isn't met.

    // Do more stuff
}