我正在创建一个Web应用程序。我喜欢使用MSBuild.exe动态编译VS项目。当通过本地计算机运行时,这非常有用。但是当我在IIS中配置时,相同的实现不起作用。我怀疑IIS可能会限制某些权限。但不清楚。
编译时遇到的错误是,
CSC:错误CS1504:无法打开源文件'c:\ Windows \ Temp \ Silverlight,Version = v4.0.AssemblyAttributes.cs'('访问被拒绝'。)
注意:我正在编译Silverlight项目。上述错误也是Process的标准输出,它以代码1退出。
代码编译项目,
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = MSBuildPath;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.RedirectStandardOutput = true;
startInfo.Arguments = "\"" + file.FullName + "\"" + " /t:Rebuild /p:Configuration=Release";
this.process = Process.Start(startInfo);
对此有何解决方案?
答案 0 :(得分:1)
“Silverlight,Version = v4.0.AssemblyAttributes.cs”文件是在TEMP文件夹中创建的,由于系统帐户(以及配置错误的用户帐户)在c:\ windows \ temp中有TEMP文件夹,他们必须共享相同的文件名。这是一个问题,因为一个帐户创建的文件不具有不同帐户的权限。
请尝试以下方法:
1.创建用户帐户并为该用户帐户配置应用程序池标识
2.将App pool属性“加载用户配置文件”设置为true。
这将确保您的App池获得自己的TEMP目录,并且不与任何其他帐户共享状态。