你怎么能用enumC#枚举一下?
例如,以下代码无法编译:
public enum Suit
{
Spades,
Hearts,
Clubs,
Diamonds
}
public void EnumerateAllSuitsDemoMethod()
{
foreach (Suit suit in Suit)
{
DoSomething(suit);
}
}
Run Code Online (Sandbox Code Playgroud)
并给出以下编译时错误:
'Suit'是'type',但用作'变量'
Suit关键字失败,第二个关键字失败.
所以我有一个Web项目,我正在尝试使用c#方法获取网站的根目录Directory.GetCurrentDirectory().我不想使用静态路径,因为文件位置将来会发生变化.这个方法在我的imageProcess.aspx.cs文件中运行,但我认为它会返回:
C:\Users\tcbl\documents\visual studio 2010\Projects\ModelMonitoring\ModelMonitoring\imageProcess.aspx.cs
Run Code Online (Sandbox Code Playgroud)
我反而得到:
C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么会发生这种情况以及可能的解决方案是什么?非常感谢.
我想获取Windows窗体应用程序的执行目录的路径.(即,可执行文件所在的目录.)
有谁知道.NET中的内置方法来做到这一点?
我的项目有一个文件夹结构:
在服务器中(在Project/Server文件夹中运行)我引用这样的文件夹:
var rootFolder = Directory.GetCurrentDirectory();
rootFolder = rootFolder.Substring(0,
rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length);
PathToData = Path.GetFullPath(Path.Combine(rootFolder, "Data"));
var Parser = Parser();
var d = new FileStream(Path.Combine(PathToData, $"{dataFileName}.txt"), FileMode.Open);
var fs = new StreamReader(d, Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)
在我的Windows机器上,这个代码工作正常,因为它被Directory.GetCurrentDirectory()引用到当前文件夹,并且正在执行
rootFolder.Substring(0, rootFolder.IndexOf(@"\Project\", StringComparison.Ordinal) + @"\Project\".Length);
Run Code Online (Sandbox Code Playgroud)
获取项目的根文件夹(不是bin或debug文件夹).但当我在Mac上运行它时,它" Directory.GetCurrentDirectory()"将我发送到/ usr // [其他东西].它没有引用我的项目所在的文件夹.
在我的项目中找到相对路径的正确方法是什么?我应该在哪里存储数据文件夹,以便解决方案中的所有子项目都可以轻松访问 - 特别是对于Kestrel服务器项目?我更喜欢不必将它存储在wwwroot文件夹中,因为数据文件夹由团队中的其他成员维护,我只想访问最新版本.我有什么选择?
我在c#中有一个控制台应用程序,它由Windows任务调度程序在学习时间开始.该应用程序需要来自其自己目录的一些物理文件并System.IO.Directory.GetCurrentDirectory()用于此目的.
正常情况下,当我自己启动控制台应用程序时,它运行正常 但是当它由Windows任务计划程序启动时,它返回C:\Windows\System32.
为什么这不是应用程序目录,还有另外一种方法可以获取应用程序目录吗?
我正在尝试加载位于项目文件夹中的XML文件(使用Visual Studio 2012).
结构是这样的:
solutionRoot\
- service\
-- ServiceClass.cs
-- AppValues.xml <-- this is the file I want to load
Run Code Online (Sandbox Code Playgroud)
在我的ServiceClass中,我尝试使用以下代码从XML文件中读取:
public String GetXmlElement(String elementName)
{
[....]
XDocument document = XDocument.Load(@"\service\AppValues.xml");
[...]
}
Run Code Online (Sandbox Code Playgroud)
当我尝试测试代码时,会出现以下错误:
Test method PandaTests.ServiceTest.ReadXmlCanReadXml threw exception:
System.IO.DirectoryNotFoundException: Could not find a part of the path
'C:\Users\MyName\Documents\GitHub\project\Project22\PandaTests\bin\Debug\service\AppValues.xml'.
Run Code Online (Sandbox Code Playgroud)
这显然是我的路径的问题,但我无法弄清楚如何使相对路径正确.我在这里查看了有关堆栈溢出的其他问题,但其中许多似乎过度参与.是否有一种简单的方法来加载XML文件而不提供绝对路径?
我正在写一个.Net WinForms并且不断在DEBUG和RELEASE配置之间切换,并且我需要一些配置才能到达的文件.
我想要做的是将文件放在BIN文件夹中的公共目录中,这样看起来像这样:
MyProject/Bin/CommonFiles
MyProject/Bin/Debug
MyProject/Bin/Release
Run Code Online (Sandbox Code Playgroud)
我正在考虑使用以下内容访问文件:
System.IO.Directory.GetParent(System.IO.Directory.GetCurrentDirectory).FullName
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果这是危险的,因为从我读过的内容,System.IO.Directory.GetCurrentDirectory可能会因用户在一个打开的文件对话框中选择一个新的当前目录而改变.
我是否应该使用以下内容:
System.IO.Directory.GetParent(Environment.CurrentDirectory).FullName
Run Code Online (Sandbox Code Playgroud)
或者有一个更好的方法来到/Bin文件夹,所以我可以从那里或一个普遍接受的方式/位置移动存储程序通常需要达到的文件和更容易引用的方式(可能是任何与任何一起工作的东西)应用程序而不仅仅是WinForms)?
我试图使用相对路径从ASP.Net vNext类库访问文件.该文件(应该)位于应用程序的安装文件夹中,并构建获取该文件夹路径所需的完整路径.
使用时System.Reflection.Assembly.GetExecutingAssembly(),Location属性为空.该CodeBase属性包含以下内容:
CodeBase ="file:/// C:/Users/username/.dnx/runtimes/dnx-clr-win-x86.1.0.0-beta7/bin/Microsoft.Dnx.Loader.dll"
如何获取正在执行的文件所在的实际文件夹?
编辑:这里 的答案对ASP.Net 5无效,正如我已经解释的那样. - 仅用于重复标记.
我有两个项目,一个1.1.0 ASP.NET Core项目和一个对4.5.2项目的引用。
我想将值从appsettings.json文件获取到我的4.5.2项目中。appsettings.json文件在核心项目中。
在我的4.5.2项目中尝试了一下,没有运气:
var mailServer = ConfigurationManager.AppSettings["MailServer"];
Run Code Online (Sandbox Code Playgroud)
如何从4.5.2项目中访问值?
在 Visual Studio 环境中,项目 A (ASP.NET) 在我的解决方案中引用项目 B (C#),如下所示:
Solution
??Project B
? ??data.txt
? ??process.cs (a class BB with static initialization new FileStream("data.txt"))
? Project A (referencces Project B)
??bin
? ??data.txt (copied from project B each time project B changes)
??Controllers
??mycontroller.cs (references the class BB)
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行应用程序时,工作目录是C:\Program Files (x86)\IIS Express\,这样的data.txt不能从编译版本的阅读process.cs这是bin。
暂时为了解决这个问题,我手动复制data.txt到了这个文件夹,但是这个方案不可行。注意,对 B 的更改必须与依赖于 B 的其他项目保持一致,这些项目并非都是 ASP.NET 项目。
我应该进行哪些更改,以便data.txt可以从我的项目中访问,而无需依赖我将data.txt文件复制到IIS Express目录?
我想将我的程序移植到 Azure Online,但我不能依赖此方法。感谢您的帮助。
其他链接答案:
这3种方法有什么区别
Directory.GetCurrentDirectory()Environment.CurrentDirectoryhostingEnvironment.ContentRootPathwwwroot用于获取存储在?下的图像的路径 在我的情况下,似乎所有的工作都是相同的,但我想了解它们之间是否存在任何其他具体情况的差异,或者使用其中一种的好处。
我使用此路径随后将图像加载到Bitmap MyBitmap变量中以进行进一步处理。希望它具有环境弹性,无论它最终部署到 Windows、Linux 还是容器;本地或云端。
将 Razor 页面与 ASP.NET Core 3.0 结合使用。
public class QRCodeModel : PageModel
{
private readonly IHostEnvironment hostingEnvironment;
public QRCodeModel(IHostEnvironment environment)
{
this.hostingEnvironment = environment;
}
public void OnGet()
{
string path1 = Path.Combine(Directory.GetCurrentDirectory(),
"wwwroot", "img", "Image1.png");
string path2 = Path.Combine(Environment.CurrentDirectory,
"wwwroot", "img", "Image1.png");
string path3 = Path.Combine(hostingEnvironment.ContentRootPath,
"wwwroot", "img", "Image1.png");
}
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个在我手动创建的文件夹中使用照片和XML文件的应用程序,我想让用户通过应用程序在运行时更新该文件夹的数据(添加照片和编辑Xml文件)我的问题是什么是最好的方法以及放置该文件夹的位置,我知道我必须放置相对路径所以我很困惑它是在AppData中如果是这样如何做到这一点.
c# ×11
.net ×7
asp.net-core ×4
directory ×3
asp.net ×2
path ×2
appdata ×1
enumeration ×1
enums ×1
filepath ×1
filestream ×1
loops ×1
razor-pages ×1
vb.net ×1
windows ×1
winforms ×1
wpf ×1
xml ×1